IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

select sur 3 tables


Sujet :

Langage SQL

  1. #1
    Membre averti
    Avatar de berry
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2002
    Messages : 251
    Points : 308
    Points
    308
    Par défaut select sur 3 tables
    bonjour

    voilà, je dois faire une selection un peu particulière avec mysql 4.1 .

    donc il y a trois tables, qui ont chacune des noms de champs différents mais qui en gros font la même chose (date, article, id, type etc) .

    je sais (ou plutot) je crois qu'il faut utiliser "UNION" seulement mes connaissances sont limitées en sql ...

    quelle est la requete générique pour sélectionner :
    champ1, champ2 de table1 , champ3, champ4 de table2
    ordonnés par champ2 et champ4 (donc les deux à la suite si possible) (ce sont des dates)
    ?

    en fait le but est de récuperer les derniers titres des articles dans plusieurs sections, et les afficher par date décroissante, toute section confondue .



    Merci .

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Champ1, CHamp2 FROM Table1
    UNION [ALL]
    SELECT Champ3, CHamp4 FROM Table2
    ORDER BY 2

  3. #3
    Membre averti
    Avatar de berry
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2002
    Messages : 251
    Points : 308
    Points
    308
    Par défaut
    Citation Envoyé par pgibone
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Champ1, CHamp2 FROM Table1
    UNION [ALL]
    SELECT Champ3, CHamp4 FROM Table2
    ORDER BY 2
    aparemment, il y aurait une erreur près de [ALL] .

    sinon, le "2", à quoi est-ce que ça correspond ?

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    J'ai mis [ALL] entre crochet pour indiquer que ALL est optionnel, donc soit tu écris UNION (qui supprime les doublons) soit tu écris UNION ALL (qui ne supprime pas les doublons).

    ORDER BY 2 fait un tri sur la deuxième colonne (qui n'a pas forcément le même nom dans chacun des SELECT constituant l'UNION) ; certains moteurs accepte, dans le même exemple, ORDER BY Champ2 (qui est le nom de la colonne dans le premier SELECT de l'UNION.

  5. #5
    Membre averti
    Avatar de berry
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2002
    Messages : 251
    Points : 308
    Points
    308
    Par défaut
    je vais te donner les noms de mes tables

    donc

    videos ( video_id, video_titre , video_date )
    photos (photo_id, photo_titre, photo_date)

    mon but est de recueillir en une seule requete et avec le tri fait par mysql quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    id | titre | type(photo ou video)
    les données
    donc, il s'agirait d'abord de faire une union pour les dates (par date decroissante) .

    pourrais-tu me donner la requete pouvant faire ça ?

    encore merci pour ton aide .

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Et quand tu auras fini de manger, appelle-moi, je ferais la vaisselle !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT video_id as id, video_titre as titre, 'Vidéo' as type_média , video_date as date_media FROM videos
    UNION ALL
    SELECT photo_id, photo_titre, 'Photo', photo_date FROM photos
    ORDER BY 4 DESC

  7. #7
    Membre averti
    Avatar de berry
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2002
    Messages : 251
    Points : 308
    Points
    308
    Par défaut


    ça fonctionne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/02/2007, 14h41
  2. Table par defaut dans un select sur 2 tables
    Par gibee dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/10/2005, 21h05
  3. un seul SELECT sur plusieurs tables ?
    Par deloo dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/09/2005, 12h57
  4. selection sur une table en fonction de plusieurs ligne
    Par dimdidi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/12/2004, 08h42
  5. select sur plusieurs table, question sur jointure
    Par Schulman dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/09/2004, 13h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo