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 sur 2 tables


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Par défaut requête sur 2 tables
    Salut à tous,
    voila mon soucis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql="SELECT $table.cle,$table.centre,$table.date,$table.heure,$table.titre,$table.x_num,$table.y_num,$table.msg,$table.utilisateur,$table.avancement,$table.histo_start,$table.site,$table.po,$table.POIDS,$table.poste_source,$table.depart,$table.heure_realisee,$table.periode,$table.type,$table.fichier,$table.fdm,$table.fdmca,$table.maj,$table.i_nip,$table.i_nitst,$table.message_prive,$table_nip.ouvrage,$table_nip.travaux,$table_nitst.objet,$table_nitst.n_bt,$table_nitst.observations,$table_sites.BEX FROM $table,$table_nip,$table_nitst,$table_sites WHERE (date like '%$us_date%') AND $table_nip.cle=$table.i_nip AND $table_nitst.cle=$table.i_nitst ";
    $sql=$sql. $criteres;
      $sql=$sql. " ORDER BY $table_sites.BEX";
    Résultat de la requête:
    1052: Champ: 'centre' dans where clause est ambigu

    D'où cela peut-i venir??
    Merci

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    il faut mettre le nom de la table avant

    latable.centre

  3. #3
    Membre éclairé Avatar de l.laurent60
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 276
    Par défaut
    N'y a t il pas confusion dans les tables, je ne croix pas avoir vu d'alias dans le nom des tables ?

    SELECT A.champ , B.champ
    FROM `table1` A
    `table2` B
    ....

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    il faut mettre le nom de la table avant

    latable.centre

    $table.centre

    c'est bien ce que j'ai fait???

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Par défaut
    Citation Envoyé par l.laurent60 Voir le message
    N'y a t il pas confusion dans les tables, je ne croix pas avoir vu d'alias dans le nom des tables ?

    SELECT A.champ , B.champ
    FROM `table1` A
    `table2` B
    ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="SELECT ...,$table_nitst.observations,$table_sites.BEX FROM $table,$table_nip,$table_nitst,$table_sites....

    c'est pas bon??

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    fais un echo $sql; pour voir ce que ca donne au final

  7. #7
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    bonjour

    tu prends ton code initial

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql="SELECT $table.cle,$table.centre,$table.date,$table.heure,$table.titre,$table.x_num,$table.y_num,$table.msg,$table.utilisateur,$table.avancement,$table.histo_start,$table.site,$table.po,$table.POIDS,$table.poste_source,$table.depart,$table.heure_realisee,$table.periode,$table.type,$table.fichier,$table.fdm,$table.fdmca,$table.maj,$table.i_nip,$table.i_nitst,$table.message_prive,$table_nip.ouvrage,$table_nip.travaux,$table_nitst.objet,$table_nitst.n_bt,$table_nitst.observations,$table_sites.BEX FROM $table,$table_nip,$table_nitst,$table_sites WHERE (date like '%$us_date%') AND $table_nip.cle=$table.i_nip AND $table_nitst.cle=$table.i_nitst ";
    $sql=$sql. $criteres;
      $sql=$sql. " ORDER BY $table_sites.BEX";
    et tu le remplaces par presque la même chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $sql="SELECT $table.cle,$table.centre,$table.date,$table.heure,$table.titre,$table.x_num,$table.y_num,$table.msg,$table.utilisateur,$table.avancement,$table.histo_start,$table.site,$table.po,$table.POIDS,$table.poste_source,$table.depart,$table.heure_realisee,$table.periode,$table.type,$table.fichier,$table.fdm,$table.fdmca,$table.maj,$table.i_nip,$table.i_nitst,$table.message_prive,$table_nip.ouvrage,$table_nip.travaux,$table_nitst.objet,$table_nitst.n_bt,$table_nitst.observations,$table_sites.BEX FROM $table,$table_nip,$table_nitst,$table_sites WHERE (date like '%$us_date%') AND $table_nip.cle=$table.i_nip AND $table_nitst.cle=$table.i_nitst ";
    $sql=$sql. $criteres;
      $sql=$sql. " ORDER BY $table_sites.BEX";
     
    echo '<br />code à mettre sur le forum pour <strong>stealth35</strong><textarea style="background-color:#DCDCDC; color:#2E8B57" >',$sql,'</textarea>';
    et tu nous colles sur le forum avec des balises [ C O D E ] ce qui s'affiche en vert sur fond gris.

    Plus simple je ne peux pas.

  8. #8
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT acrbo.cle,acrbo.centre,acrbo.date,acrbo.heure,acrbo.titre,acrbo.x_num,acrbo.y_num,acrbo.msg,acrbo.utilisateur,acrbo.avancement,acrbo.histo_start,acrbo.site,acrbo.po,acrbo.POIDS,acrbo.poste_source,acrbo.depart,acrbo.heure_realisee,acrbo.periode,acrbo.type,acrbo.fichier,acrbo.fdm,acrbo.fdmca,acrbo.maj,acrbo.i_nip,acrbo.i_nitst,acrbo.message_prive,nip.ouvrage,nip.travaux,nitst.objet,nitst.n_bt,nitst.observations,sites.BEX FROM acrbo,nip,nitst,sites WHERE (date like '%2011-02-08%') AND nip.cle=acrbo.i_nip AND nitst.cle=acrbo.i_nitst  and (centre like '%%%')  and ( (avancement like '%%%')  and (utilisateur like '%%')   and (site like '%%')   and (titre like '%%%')   or (utilisateur like 'admin%') ) ORDER BY sites.BEX
    c'est ça??

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par fthem Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT acrbo.cle,acrbo.centre,acrbo.date,acrbo.heure,acrbo.titre,acrbo.x_num,acrbo.y_num,acrbo.msg,acrbo.utilisateur,acrbo.avancement,acrbo.histo_start,acrbo.site,acrbo.po,acrbo.POIDS,acrbo.poste_source,acrbo.depart,acrbo.heure_realisee,acrbo.periode,acrbo.type,acrbo.fichier,acrbo.fdm,acrbo.fdmca,acrbo.maj,acrbo.i_nip,acrbo.i_nitst,acrbo.message_prive,nip.ouvrage,nip.travaux,nitst.objet,nitst.n_bt,nitst.observations,sites.BEX FROM acrbo,nip,nitst,sites WHERE (date like '%2011-02-08%') AND nip.cle=acrbo.i_nip AND nitst.cle=acrbo.i_nitst  and (centre like '%%%')  and ( (avancement like '%%%')  and (utilisateur like '%%')   and (site like '%%')   and (titre like '%%%')   or (utilisateur like 'admin%') ) ORDER BY sites.BEX
    c'est ça??

    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
    17
    18
    19
    20
    21
    SELECT 
    	acrbo.cle,acrbo.centre,acrbo.date,acrbo.heure,acrbo.titre,
    	acrbo.x_num,acrbo.y_num,acrbo.msg,acrbo.utilisateur,
    	acrbo.avancement,acrbo.histo_start,acrbo.site,
    	acrbo.po,acrbo.POIDS,acrbo.poste_source,acrbo.depart,
    	acrbo.heure_realisee,acrbo.periode,acrbo.type,
    	acrbo.fichier,acrbo.fdm,acrbo.fdmca,acrbo.maj,
    	acrbo.i_nip,acrbo.i_nitst,acrbo.message_prive,
    	nip.ouvrage,nip.travaux,nitst.objet,
    	nitst.n_bt,nitst.observations,sites.BEX 
    	FROM acrbo,nip,nitst,sites 
    	WHERE (date like '%2011-02-08%') 
    		AND nip.cle=acrbo.i_nip 
    		AND nitst.cle=acrbo.i_nitst  
    		and (centre like '%%%')  
    		and ( (avancement like '%%%')  
    		and (utilisateur like '%%')   
    		and (site like '%%')   
    		and (titre like '%%%')   
    		or (utilisateur like 'admin%') ) 
    		ORDER BY sites.BEX
    et la : and (centre like '%%%') y'a pas le nom de la table, pareil pour les autres

  10. #10
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    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
    17
    18
    19
    20
    21
    SELECT 
    	acrbo.cle,acrbo.centre,acrbo.date,acrbo.heure,acrbo.titre,
    	acrbo.x_num,acrbo.y_num,acrbo.msg,acrbo.utilisateur,
    	acrbo.avancement,acrbo.histo_start,acrbo.site,
    	acrbo.po,acrbo.POIDS,acrbo.poste_source,acrbo.depart,
    	acrbo.heure_realisee,acrbo.periode,acrbo.type,
    	acrbo.fichier,acrbo.fdm,acrbo.fdmca,acrbo.maj,
    	acrbo.i_nip,acrbo.i_nitst,acrbo.message_prive,
    	nip.ouvrage,nip.travaux,nitst.objet,
    	nitst.n_bt,nitst.observations,sites.BEX 
    	FROM acrbo,nip,nitst,sites 
    	WHERE (date like '%2011-02-08%') 
    		AND nip.cle=acrbo.i_nip 
    		AND nitst.cle=acrbo.i_nitst  
    		and (centre like '%%%')  
    		and ( (avancement like '%%%')  
    		and (utilisateur like '%%')   
    		and (site like '%%')   
    		and (titre like '%%%')   
    		or (utilisateur like 'admin%') ) 
    		ORDER BY sites.BEX
    et la : and (centre like '%%%') y'a pas le nom de la table, pareil pour les autres
    je l'écris comment alors??

  11. #11
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    bah pareil que le select : and (acrbo.centre like '%%%')

  12. #12
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    je suggère que tous les like '%%' soient remplacés par des like '%' ce qui veut dire exactement la même chose!

    EDIT: j'irai même plus loin en disant que c'est équivalent à NOT NULL. quelqu'un confirme?

  13. #13
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par gene69 Voir le message
    je suggère que tous les like '%%' soient remplacés par des like '%' ce qui veut dire exactement la même chose!
    voir rien mettre puisque ça veut dire LIKE TOUT


  14. #14
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    pas tout à fait d'accord. Pour moi ça veut dire tout ce qui est initialisé.

  15. #15
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par gene69 Voir le message
    pas tout à fait d'accord. Pour moi ça veut dire tout ce qui est initialisé.
    oui ca ne marche pas si la variable est NULL, par contre si elle est vide il match

  16. #16
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Par défaut
    OHHHHHHHHHHHHH
    chui pomé là...
    ma requête fini comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (date like '%$us_date%') AND $table_nip.cle=$table.i_nip AND $table_nitst.cle=$table.i_nitst ";
    que dois je rajoutter?

  17. #17
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par fthem Voir le message
    OHHHHHHHHHHHHH
    chui pomé là...
    fais juste comme je t'ai dis, le reste on verra apres

  18. #18
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Par défaut
    j'ai rajoutté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (date like '%$us_date%') AND (acrbo.centre like '%$centre%')
    ça me donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    acrbo,nip,nitst,sites WHERE (date like '%2011-02-08%') AND (acrbo.centre like '%%') AND
    C'est ce que tu veux??

  19. #19
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par fthem Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (date like '%$us_date%') AND (acrbo.centre like 'QUOI????')
    tu vois mon proléme???
    t'es têtu, oublie le coup des % pour le moment, en plus t'as pas corrigé date

  20. #20
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    c'est ça que j'aime pas avec les débutants, c'est qu'ils pensent qu'on peut savoir le but ultime de leur développement juste parce qu'on comprends un peu mieux le code qu'ils écrivent.

    Alors que non. Si tu sais expliquer ce que tu veux, alors on pourra te dire comment le faire. Si tu ne sais pas pourquoi tu veux/dois filtrer sur centre alors je serai bien embêté de t'expliquer pourquoi il faut le faire.

    en fait je crois que j'ai compris pourquoi tu peux avoir des formes like '%%', parce que tu dois avoir des bouts de code comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $variable = '';
    $sql = ' table.centre LIKE \'%'.$variable.'%\' ';
    c'est pas très grave.

    Explique quel sont les enregistrements que tu dois retrouver dans la base, on te dira quelles conditions mettre (si jamais on comprend ton schéma).

Discussions similaires

  1. Besoin d'aide pour requête sur grosse table
    Par Fabouney dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/01/2006, 09h01
  2. Problème de requêtes sur deux tables
    Par Pymm dans le forum Access
    Réponses: 6
    Dernier message: 06/09/2005, 09h06
  3. Requête sur plusieurs tables
    Par drinkmilk dans le forum Langage SQL
    Réponses: 8
    Dernier message: 11/07/2005, 12h25
  4. Requête sur 2 tables ?
    Par kibodio dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/03/2005, 15h57
  5. Requête sur 2 tables et surtout novice...
    Par kibodio dans le forum Langage SQL
    Réponses: 13
    Dernier message: 03/03/2005, 15h45

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