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 :

Requête sql imbriquée


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Par défaut Requête sql imbriquée
    Bonsoir,

    J'ai un problème dans la conception d'une requête, et j'aurais besoin de vous.

    Le but, je recherche dans ma table1, champs nom, le mot matsuyama
    Pas de problème. Par contre, je voudrais également chercher dans la table2, champs tag, ce même mot. Or, il n'y est pas mais je voudrais tout de même afficher la ligne de la table1 et je bloque.

    Ensuite, deuxième cas, je recherche dans ma table1, champs nom, le mot japonais qui n'y figure pas mais également dans ma table2, champs tag qui lui y est bien. Je voudrais donc afficher la ligne de la table1 qui est lié à la table 2 par l'id.

    Pas facile à expliquer, j'espère que vous m'avez compris lol

    Merci

  2. #2
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 73
    Par défaut
    bn pr le premier cas enregistre le resultat de la premiere requete dans une variable affiche la ensuite
    si tu pouvais mettre le code ça serait mieu

  3. #3
    Membre éclairé Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Par défaut
    Exemple

    Table1 -> champs nom = matsuyama | id = 3931
    Table2 -> champs tag = japonais | id = 3931
    Si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.id,Table1.nom,Table2.id,Table2.tag FROM Table1, Table2 WHERE Table2.tag like '%japonais%' or Table1.nom like '% japonais%' and Table1.id = Table2.id
    Ca me renvoie toute ma base de données, donc il y a un problème :s
    Merci

  4. #4
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 73
    Par défaut
    Citation Envoyé par PIEPLU Voir le message
    Exemple



    Si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.id,Table1.nom,Table2.id,Table2.tag FROM Table1, Table2 WHERE Table2.tag like '%japonais%' or Table1.nom like '% japonais%' and Table1.id = Table2.id
    Ca me renvoie toute ma base de données, donc il y a un problème :s
    Merci
    bon je te donne deux solutions essaie et utilise celle que tu preferes:

    Solution 1: une requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.id,Table1.nom,Table2.id,Table2.tag FROM Table1, Table2 WHERE (Table2.tag like 'japonais' or Table1.nom like ' japonais') and Table1.id = Table2.id
    Solution 2:
    2 requête et un test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $res1=mysql_query("SELECT id, nom FROM Table1 WHERE nom LIKE 'japonais'");
    $res2=mysql_query("SELECT id, tag FROM Table 2 WHERE tag LIKE 'japonais'");
    while($r1=mysql_fetch_array($res1) OR $r2=mysql_fetch_array($res2))
    {
               if($r1['id'] == $r2['id'])
               {
                          ton traitement la;
               }
    }

  5. #5
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Citation Envoyé par ridick Voir le message
    bon je te donne deux solutions essaie et utilise celle que tu preferes:

    Solution 1: une requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.id,Table1.nom,Table2.id,Table2.tag FROM Table1, Table2 WHERE (Table2.tag like 'japonais' or Table1.nom like ' japonais') and Table1.id = Table2.id
    Solution 2:
    2 requête et un test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $res1=mysql_query("SELECT id, nom FROM Table1 WHERE nom LIKE 'japonais'");
    $res2=mysql_query("SELECT id, tag FROM Table 2 WHERE tag LIKE 'japonais'");
    while($r1=mysql_fetch_array($res1) OR $r2=mysql_fetch_array($res2))
    {
               if($r1['id'] == $r2['id'])
               {
                          ton traitement la;
               }
    }

    Euh... Pour la première solution utiliser des LIKE sans % ça sert pas à grand chose, ça revient à faire un = (à moins qu'il y ait une raison que j'ignore ???). Quand à la deuxième solution... Euh...


    Pour Pieplu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.id,Table1.nom,Table2.id,Table2.tag FROM Table1, Table2 WHERE Table2.tag like '%japonais%' or Table1.nom like '% japonais%' and Table1.id = Table2.id
    Tu dois avoir un souci de priorité dans tes conditions, le AND étant prioritaire par rapport au OR.
    Essaie en parenthèsant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.id,Table1.nom,Table2.id,Table2.tag FROM Table1, Table2 WHERE (Table2.tag like '%japonais%' or Table1.nom like '%japonais%') and Table1.id = Table2.id
    Enfin après ça dépend de ce que tu veux obtenir par rapport à ce que tu as en BDD.

  6. #6
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 73
    Par défaut
    Citation Envoyé par Amara Voir le message

    Euh... Pour la première solution utiliser des LIKE sans % ça sert pas à grand chose, ça revient à faire un = (à moins qu'il y ait une raison que j'ignore ???). Quand à la deuxième solution... Euh...


    Pour Pieplu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.id,Table1.nom,Table2.id,Table2.tag FROM Table1, Table2 WHERE Table2.tag like '%japonais%' or Table1.nom like '% japonais%' and Table1.id = Table2.id
    Tu dois avoir un souci de priorité dans tes conditions, le AND étant prioritaire par rapport au OR.
    Essaie en parenthèsant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.id,Table1.nom,Table2.id,Table2.tag FROM Table1, Table2 WHERE (Table2.tag like '%japonais%' or Table1.nom like '%japonais%') and Table1.id = Table2.id
    Enfin après ça dépend de ce que tu veux obtenir par rapport à ce que tu as en BDD.
    c'est ce qui est demandé : le mot japonais mais c'est plus propre de mettre LIKE pour des chaines de caractères et des dates si on veut coder en respectant les normes bien sur pour ta 2eme solution c'est la meme que la mienne :d

Discussions similaires

  1. [Toutes versions] Requète SQL imbriqué
    Par Maxpuff dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 05/05/2010, 16h46
  2. Requêtes SQL imbriquées
    Par zpliz dans le forum SQL
    Réponses: 5
    Dernier message: 25/03/2010, 09h58
  3. Requête SQL imbriqué, 3 tables, plusieurs colonnes
    Par opacho dans le forum Requêtes
    Réponses: 3
    Dernier message: 27/07/2009, 09h45
  4. Requête SQL imbriquée
    Par cecile15 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/05/2009, 10h39
  5. Requête SQL imbriquées
    Par Fanette85 dans le forum ASP.NET
    Réponses: 20
    Dernier message: 05/10/2007, 14h12

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