SELECT sur plusieurs tables - PHP - Programmation
Marsh Posté le 15-01-2004 à 20:20:47
C'est quoi cette syntaxe bat1.id=devis1.id='$id_test' ????
Essaye une jointure plutôt, style
Code :
|
ou
Code :
|
Marsh Posté le 15-01-2004 à 20:38:03
naceroth a écrit : C'est quoi cette syntaxe bat1.id=devis1.id='$id_test' ????
|
bah j'ai voulu m'inspirer d'un tutos qui me donnait une synthaxe comme ça :
SELECT * FROM table1,table2 WHERE table1.id = table2.id;
si je fais :
SELECT * FROM bat1,devis1 WHERE bat1.id='$id_test' = devis1.id='$id_test' AND bat1.newold=OLD = devis1.newold=OLD;
ça veut dire quelquechose ?
Marsh Posté le 15-01-2004 à 22:11:06
non, tu peux pas cumuler les comparaisons entre 4 champs.
... WHERE bat1.id='$id_test' AND devis1.id='$id_test' AND bat1.newold='OLD' AND devis1.newold='OLD';
Marsh Posté le 16-01-2004 à 00:28:36
freed102 a écrit : |
Non, une comparaison, c'est toujours entre 2 éléments.
Donc ... = ... and ... = ... etc
Après, faire des and à ralonge ou des jointures, c'est question de gouts et de circonstances
Marsh Posté le 16-01-2004 à 16:21:11
bah je comprends pas... mon truc ne sais pas compter !!!
avec mysql_num_rows il me repond des trucs incoherents... je m'explique.. j'ai deux tables, bat1 et devis1
et quand je demande les resultats de mes tables il me repond des trucs comme ça :
bat1 devis1 resultat
2 + 0 = 0
2 + 1 = 2
2 + 2 = 4
2 + 3 = 6
allez voir vous même !
http://www.clonecopy.net/php/membr [...] 225c172b2d
si la session est fermée :
login : xxx@xxx.com
pwd : xxx
puis aller dans l'espace membres
Faites joujou avec les suppressions de devis et commandes et bat... et vous verrez que le chiffre dans le menu de gauche "x elements historiques" ne veut rien dire !!!
pourtant.. ma requete est simple !
Code :
|
Marsh Posté le 16-01-2004 à 17:33:48
Bon bah... tant pis !! je la fais à l'ancienne !!! au moins ça marche !!!
Code :
|
là ya plus d'erreur !
Marsh Posté le 16-01-2004 à 17:48:02
Pourquoi demander à mysql de te renvoyer tous les champs si tu veux justes savoir le nombre de tupples du résultat ? Pourquoi ne pas simplement demander à mysql de la faire lui même, ce qui reduirait les risques de résultats ambigus du à une jointure *douteuse* ?
(voir instruction SUM et DISTINCT )
//edit :
Le nombre de résultat de la requête
Code :
|
n'est pas incohérent, il est au contraire parfaitement logique :
bat1 devis1 resultat
2 + 0 = 0 aucun résultat pour devis 1, y en forcément pas non plus pour les deux requêtes mises en commun
2 + 1 = 2
2 + 2 = 4
2 + 3 = 6
Les trois autres cas viennent du fait que tu mélanges 2 tables sans faire de jointures, tous les résultats de l'une sont multipliés par tous les résultats de l'autre (fait un select sans le where pour t'en convaincre, tu auras au total bat1*devis1 résultats )
Marsh Posté le 15-01-2004 à 20:01:26
bon j'ai absolument besoin de faire une requete sur plusieurs tables à la fois avec un argument
j'ai fait ça :
SELECT * FROM bat1, devis1 WHERE bat1.id=devis1.id='$id_test' AND bat1.newold=devis1.newold='OLD'
ça m'affiche pas d'erreur.. mais visiblement... ça bugge !
j'arrive pas à trouver la syntaxe qu'il me faut pour pourvoir interroger à la fois "bat1" et "devis1" avec la même clef etrangère "id" et l'option "OLD"
can you help me ?