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

Requêtes MySQL Discussion :

Union et tables à champs identiques


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Points : 139
    Points
    139
    Par défaut Union et tables à champs identiques
    Bonjour,


    Voici la requête que je souhaite executer pour obtenir les 4 dernières réactions en date des internautes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT id, pseudo, DATE_FORMAT(date_publication, '%d-%m-%Y') AS dat_reaction, reaction FROM 
    (SELECT id, pseudo, date_publication, reaction FROM tblsoutien 
    UNION SELECT id, pseudo, date_publication, reaction FROM tblreaction01
     
    UNION SELECT id, pseudo, date_publication, reaction FROM tblreaction21 
     
    UNION SELECT id, pseudo, date_publication, reaction FROM tblreaction04 
     
    UNION SELECT id, pseudo, date_publication, reaction FROM tblreaction05) 
     
    ORDER BY date_publication DESC LIMIT 4faux
    Les tables ont les structures suivantes :
    pour tblsoutien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    id tinyint(4) unsigned not null auto_increment,
    	pseudo varchar(50) not null,
    	email_soutien varchar(100) not null,
    	reaction blob not null,
    	date_publication datetime,
    	num_ip varchar(50),
    	note int(10) unsigned not null,
    	ville varchar(50),
    	valid varchar(3) not null default 'non',
    	PRIMARY KEY(id)
    pour tblreaction01, tblreaction21, tblreaction04, tblreaction05:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    id tinyint(4) unsigned not null auto_increment, 
    pseudo varchar(50) not null,
    ville varchar(50),
    date_publication datetime,
    reaction blob not null,
    vu varchar(5) not null default 'non',
    PRIMARY KEY(id)
    Malheureusement, mysql_query me retourne false !
    Qu'est-ce qui ne va pas dans cette requête?

    Merci

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    La requête entre parenthèses (SELECT... UNION...) fonctionne t-elle ?

    Sur le plan conceptuel : Pourquoi tant de tables pour stocker semble t-il les mêmes informations ?

  3. #3
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 327
    Points
    4 327
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Sur le plan conceptuel : Pourquoi tant de tables pour stocker semble t-il les mêmes informations ?
    +1

    De plus avec une conception autre, ce genre de problème ne se poserait pas, peut-être qu'une amélioration de la conception serait utile ? (si c'est possible bien sur).

  4. #4
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Aussi la sous requête (celle avec les UNION qui devraient probablement être des UNION ALL) doit être nommée : "FROM (SELECT [...]) AS MonUnion"

  5. #5
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Points : 139
    Points
    139
    Par défaut
    Merci mais j'ai trouvé une réponse à mon souci que je partage volontier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    (SELECT id, pseudo, date_publication, reaction FROM tblsoutien 
    UNION SELECT id, pseudo, date_publication, reaction FROM tblreaction01
     
    UNION SELECT id, pseudo, date_publication, reaction FROM tblreaction21 
     
    UNION SELECT id, pseudo, date_publication, reaction FROM tblreaction04 
     
    UNION SELECT id, pseudo, date_publication, reaction FROM tblreaction05) 
     
    ORDER BY date_publication DESC LIMIT 4
    Je me surprends de constater que même si les tables contiennent plusieurs champs différents, il suffit d'effectuer la requête contenant uniquement les champs identiques et la requête s'execute... sans erreur!

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

Discussions similaires

  1. [MySQL] Requête sur 3 tables aux champs identiques
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/11/2008, 12h35
  2. Deux champs identiques dans la même table
    Par amne26 dans le forum Modélisation
    Réponses: 2
    Dernier message: 22/09/2008, 20h29
  3. [MySQL] sélectionner dans une table deux champs identiques
    Par zabdaniel dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/03/2008, 17h49
  4. Ajouter les champs identiques de plusieurs tables
    Par philippesorin dans le forum Access
    Réponses: 2
    Dernier message: 27/07/2007, 08h52
  5. Sélection de 2 champs identiques dans 2 tables différentes
    Par Véronique75ca dans le forum Access
    Réponses: 3
    Dernier message: 28/06/2006, 09h33

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