requete sur 2 tables

olisnow
Invité n'ayant pas de compte PHPfrance

29 juin 2012, 15:11

bonjour,
je voudrais mettre en place sur requête sur 2 tables en php sur du sql.
j'ai deux table 1 et 2

Table 1:
Champs A: 19|38|40
champs B: 80|80|30

Table 2:
Champs C: clio|clio|panda
Champs D: 19|38|40

Je voudrais faire une requête qui me trouve :

ceux qui ont une clio sur la table 2
et qui habite dans le departement 80


du style :

SELECT * FROM `table 2` INNER JOIN `table 1` ON `table 2`.`c=clio` = `table1`.`b=80`

ou

SELECT * FROM `table2` WHERE `C` LIKE 'clio' AND SELECT * FROM `table1` WHERE `B` =80

Merci à tous

ViPHP
ViPHP | 2577 Messages

29 juin 2012, 15:24

select * from table1,table2 where champD = champA and champB = 80 and champC = 'clio'

première condition : permet de rapprocher les lignes qui vont ensemble
2 et 3 conditions : les conditions que tu demandes.

olisnow
Invité n'ayant pas de compte PHPfrance

29 juin 2012, 15:35

je precice:

si je fais ta requete:
erreur Column 'id' in where clause is ambiguous

car nom du champs A = Nom du champs D=id
nom du champs B = departement
nom du champs C = model

ViPHP
AB
ViPHP | 5818 Messages

29 juin 2012, 18:10

C'est parce que tu utilise l'opérateur "*" qui ramène tous les champs et comme tu apelle deux tables et que certain champs (apparemment l'id) sont commun, cela crée l'ambiguïté. Il ne faut donc pas utiliser * mais nommer explicitement les champs que tu veux retourner et utiliser les allias si tu as besoin de retourner les champs de même nom dans différentes tables :
$query = "select
table1.id as idt1,
table2.id as idt2

FROM ...

$result = mysql_query($query);
$ressource = mysql_fetch_assoc($result);
et tu récupère donc $ressource['idt1'] et $ressource['idt2']