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

PHP & Base de données Discussion :

requete multiple et concaténer réponse [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Par défaut requete multiple et concaténer réponse
    Bonjour

    tblreaction contient différents nom de table. Ces tables existent et possèdent les mêmes.

    Je souhaite obtenir tous les enregistrements de ces tables dans unn unique requête. Ces enregistrements doivent être triés par date.
    J'uitise union mais le code m'indique une erreur.
    Je veux bien utiliser inner join mais je ne crois pas que cela soit adapté ici

    voici mon code erroné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $recherche_table=mysql_query("SELECT nom FROM tblreaction");
    	if(mysql_num_rows($recherche_table)>0)
    	{
    	$req_table="(SELECT id, pseudo, date_publication, reaction FROM tblsoutien)";
    	while($col=mysql_fetch_assoc($recherche_table))
    	{
    	$req_table.=" UNION (SELECT id, pseudo, date_publication, reaction FROM ".$col['nom'].")";
    	}
    	$req_table.=" ORDER BY date_publication LIMIT 4";
    }
    J'ai une erreur à l'execution de mysql_query($req_table).
    Merci

  2. #2
    Membre Expert

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

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Bonjour,

    A ma connaissance il n'est pas nécessaire d'utiliser les parenthèses avec l'opérateur UNION, peut-être est-ce le problème ?

    Peut-tu nous donner ce que contient $req_table a la fin de ta boucle ?

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Par défaut
    Bonjour,
    sans les parenthèses, j'ai une erreur de syntaxe!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    (SELECT id, pseudo, date_publication, reaction FROM tblsoutien 
    UNION 
    (SELECT id, pseudo, date_publication, reaction FROM tblreaction1) 
    UNION 
    (SELECT id, pseudo, date_publication, reaction FROM tblreaction2) 
    UNION 
    (SELECT id, pseudo, date_publication, reaction FROM tblreaction3) 
    UNION 
    (SELECT id, pseudo, date_publication, reaction FROM tblreaction4);
    Je suis en train de me demander si je ne pourrais pas avoir le résultat escompté en utilisant select * FROM tblreaction1, tblreaction2, ...

    Qu'en pensez-vous?

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    salut,

    quelle est l'erreur retournée sans les parenthèses?

  5. #5
    Membre Expert

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

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Je me suis mal exprimé pardon , quel est l'erreur MySQL (tu l'obtient soir avec un or die() soit en exécutant a la main la requête contenue dans ta variable en fin de boucle).

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Par défaut
    A l'heure actuelle, ma requête est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    (SELECT id, pseudo, date_publication, reaction FROM tblsoutien)
     
    UNION (SELECT id, pseudo, date_publication, reaction FROM tblreaction04)
     
    UNION (SELECT id, pseudo, date_publication, reaction FROM tblreaction05)
     
    UNION (SELECT id, pseudo, date_publication, reaction FROM tblreaction23)
     UNION (SELECT id, pseudo, date_publication, reaction FROM tblreaction25)
     UNION (SELECT id, pseudo, date_publication, reaction FROM tblreaction24)
     UNION (SELECT id, pseudo, date_publication, reaction FROM tblreaction26) 
     
    UNION (SELECT id, pseudo, date_publication, reaction FROM tblreaction13)
     ORDER BY date_publication LIMIT 4
    L'erreur via die() est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Illegal mix of collations for operation 'UNION'

  7. #7
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $recherche_table=mysql_query("SELECT nom FROM tblreaction");
        IF(mysql_num_rows($recherche_table)>0)
        {
        $req_table="(SELECT id, pseudo, date_publication, reaction FROM tblsoutien)";
        while($col=mysql_fetch_assoc($recherche_table))
    L'erreur semble se situer non pas dans la requête UNION mais dans la première requête pourtant toute simple.

    Ne manquerait-il pas un argument à mysql_query ?
    La connexion à MySQL est-elle déjà faite ?
    La base de données est-elle déjà sélectionnée ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Membre Expert

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

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Citation Envoyé par bastien Voir le message
    Je suis en train de me demander si je ne pourrais pas avoir le résultat escompté en utilisant select * FROM tblreaction1, tblreaction2, ...
    Tu obtiendrait un produit cartésien ce qui ne serait pas le résultat recherché.
    Pourrait tu donner la structure de tblsoutien et tblreaction1 ?

    Je suppose que la base de donnée est déjà en production et qu'il est trop tard pour voir la conception ?

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Par défaut
    les tables ont la même structure. les champs sont identiques : id, pseudo, date_publication, reaction

    En effet, elles tournent déjà !

    Citation Envoyé par Cybher Voir le message
    salut,

    quelle est l'erreur retournée sans les parenthèses?
    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/epinal31/public_html/system/accueil.php on line 136
    Et c'est d'autant plus bizarre que je n'ai pas de problème à l'éxécution de mysq_query!

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

Discussions similaires

  1. Envoyer un mail, suite à une requete multiple.
    Par Z[ee]k dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 06/07/2006, 14h06
  2. Réponses: 9
    Dernier message: 22/06/2006, 10h11
  3. problème requete multiplication
    Par MichMich29 dans le forum Langage SQL
    Réponses: 28
    Dernier message: 24/05/2006, 10h16
  4. Optimisation requete avec sous-requetes multiples
    Par gege.boubou dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/09/2005, 10h42
  5. [VB6]Prob avec les requêtes multiples
    Par cammipascal dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 30/03/2004, 18h46

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