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 :

Problème union SQL


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut Problème union SQL
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SELECT a.id_amide,pseudo_membre,date_creat
    	FROM amis a, membres b
    	where a.id_amide=b.id_membre
    	AND a.id_membre=".$idamis."
    	UNION ALL
    	SELECT id_membre,nom, date_creat
    	FROM files 
    	where id_membre=".$idamis." 
    	AND (type=3 OR type=4 OR type=5) 	 
    	UNION ALL
    	SELECT id_membre,sujet_news,date_modif
    	FROM news where id_membre=".$idamis."	
    	ORDER BY date_creat DESC"; 
    $requete=sql_query($requete);
    	while(($data2=sql_fetch_array($requete))&&($nb<5))
    	{
    est il possible d'aprés ce code de savoir de quel table proviendra la premiere données? (News? files? amis ?) si c'est possible que dois-je écrire?Quel test dois-je effectuer ?
    Je voudrai par la suite ,selon d'ou la donné a été extraite, ecrire différente chose j'ai tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    if(!empty($data2['nom']))
    			{
    				echo "a ajout&eacute; un fichier sur son player";
    				echo "<br/>";
    			}
    		if(!empty($data2['pseudo_membre']))
    			{
    				echo "a ajout&eacute; comme amis : ";
    				echo $data2['pseudo_membre'];
    				echo "<br/>";
    			}
    			if(!empty($data2['sujet_news']))
    			{
    				echo "a ajout&eacute; une news sur sa page";
    				echo "<br/>";
    			}
    mais a priori ca marche pas je passe toujours dans la premiere condition

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 065
    Par défaut
    Bonjour,

    C'est une question qui revient souvent...
    Tu peux ajouter une colonne "fictive" à chaque requête de l'union pour connaître l'origine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT a.id_amide,pseudo_membre,date_creat, 'amis' as origine
    FROM amis a, membres b
    WHERE a.id_amide=b.id_membre
    AND a.id_membre=".$idamis."
    UNION ALL
    SELECT id_membre,nom, date_creat, 'files' as origine
    FROM files 
    WHERE id_membre=".$idamis." 
    AND (type=3 OR type=4 OR type=5) 	 
    UNION ALL
    SELECT id_membre,sujet_news,date_modif, 'news' as origine
    FROM news WHERE id_membre=".$idamis."	
    ORDER BY date_creat DESC
    Ainsi, tu as maintenant une colonne "origine" qui te dit de quelle table proviennent les données...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut
    Merci ca a l'air de fonctionner,
    j'aurai une question maintenant
    au dessus j'effectue comme tu a pu le deviner une requete permettant de trouver tous les amis de la personne connecter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $sql = 
    "SELECT DISTINCT a.id_amide, pseudo_membre, blog_avatar, profil_pseudo, id_priorite, url_client_part 
    FROM amis a, membres b, partenaires c 
    WHERE b.part_id=c.part_id AND a.id_amide=b.id_membre 
    AND (statut=1 OR statut=2 OR statut=3) 
    AND a.id_membre=".$_SESSION['id']." 
    AND (a.id_priorite=1 OR a.id_priorite=2) ";
    $sql=sql_query($sql);
     
    $nbamis=sql_num_rows($sql); // on a le nombre d'amis
    while($data=sql_fetch_array($sql))
    {
    	$nb=0;
    	$idamis=$data['id_amide'];
    ensuite j'effecue la requete precedente.
    comment pourrai je faire pour trier toutes les reponse par date et nom par membre puis par date ?

Discussions similaires

  1. problème union sql
    Par yoyo312 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 04/10/2009, 17h21
  2. problème avec UNION SQL
    Par greg1517 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 06/05/2007, 20h46
  3. Problème réplication SQL Server et SQL Server CE (RDA)
    Par didix11 dans le forum Réplications
    Réponses: 2
    Dernier message: 15/04/2004, 12h10
  4. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 10h31
  5. Réponses: 8
    Dernier message: 23/10/2003, 17h22

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