Requete sur un champ mais plusieurs conditions

cs_lowkey Messages postés 260 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 5 novembre 2010 - 15 févr. 2008 à 15:04
cs_lowkey Messages postés 260 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 5 novembre 2010 - 17 févr. 2008 à 17:48
Bonjour à tous !

Voici mon problème :

j'ai une bdd :

champ1 | champ2

12 | 1
12 | 2
13 | 1
14 | 1

J'aimerais faire une requete qui me selectionne le champ1 dans lequel le champ2 correspond à 1 et 2

Résultat voulu :

resultat
12

Mais je ne sais pas comment construire cette requete...
J'ai essayé des select champ1 from table WHERE champ2=1 or champ2=2 group by champ1
ou select champ1 from table group by champ1 having champ2=1 or champ2=2...
rien a faire, je ne trouve pas...

Quelqu'un a une idée?

Merci

<!-- / message -->







<hr />
lowke<sub>y
</sub>

23 réponses

cs_lowkey Messages postés 260 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 5 novembre 2010 1
17 févr. 2008 à 15:46
Nikel malalam, avec les inner join ça marche au poil.

Le seul probleme qui subsiste,  c'est que lors de ma deuxieme requete (récupération du code postale), on dirait qu'il le résultat de la premiere :

<?php

$dbhost= '127.0.0.1';
$dblogin='root';
$dbpassword='';
$dbname='test';
$connex1=mysql_connect($dbhost,$dblogin,$dbpassword,true);
mysql_select_db($dbname,$connex1);

$lid1=mysql_query("SELECT t.id1 FROM test.t1 tINNER JOIN test.t1 t2 ON t2.id1 t.id1 AND t2.id2 1INNER JOIN test.t1 t3 ON t3.id1 t.id1 AND t3.id2 2
WHERE t.id2 = 3");

$dbhost='127.0.0.1';
$dblogin='root';
$dbpassword='';
$dbname='test2';

$connex2=mysql_connect($dbhost,$dblogin,$dbpassword,true);
mysql_select_db($dbname,$connex2);

$cp=mysql_query("SELECT cp FROM test2.t2 WHERE id1 IN ".$lid1);
while($l=mysql_fetch_row($cp)) // Warning : mysql_fetch_row(): supplied argument is not a valid MySQL result resource
{
    echo $l[0];
}

?>

<hr />lowkey=45971
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
17 févr. 2008 à 16:33
Tu ne peux pas faire ça comme ça.
$lid1 est une ressource php.
De plus, mysql_query(), sans identifiant de lien, utilisera le dernier lien disponible.

De tte manière, pour faire ça, tu dois avoir une connexion capable de lire tes deux bases, et faire tes requêtes "cross db". Je ne comprends d'ailleurs pas pourquoi tu fais 2 requêtes, là, alors que nous avons vu que nous pouvions aller chercher tes données en une seule requête : ma dernière requête n'était qu'un exemple pour montrer comment tu pouvais récupérer tes id. Mais mes autres requêtes tapaient sur tes 2 tables (et bdd) : tu dois faire la même chose maintenant.

SELECT tmain.cp FROM test.t1 t
INNER JOIN test2 tmain ON tmain.id1 = t1.id1INNER JOIN test.t1 t2 ON t2.id1 t.id1 AND t2.id2 1INNER JOIN test.t1 t3 ON t3.id1 t.id1 AND t3.id2 2
WHERE t.id2 = 3
0
cs_lowkey Messages postés 260 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 5 novembre 2010 1
17 févr. 2008 à 17:48
Je suis vraiment largué avec ces inner join...

J'ai bien fait appel a mes 2 bases, j'ai fait la requete, mais ça ne marche toujours pas...

$dbhost= '127.0.0.1';
$dblogin='root';
$dbpassword='';
$dbname='test';
$connex1=mysql_connect($dbhost,$dblogin,$dbpassword,true);
mysql_select_db($dbname,$connex1);

$dbhost='127.0.0.1';
$dblogin='root';
$dbpassword='';
$dbname='test2';
$connex2=mysql_connect($dbhost,$dblogin,$dbpassword,true);
mysql_select_db($dbname,$connex2);

$lid1=mysql_query("SELECT tmain.cp FROM test.t1 t
INNER JOIN test2.t2 tmain ON tmain.id1 = t1.id1INNER JOIN test.t1 t2 ON t2.id1 t.id1 AND t2.id2 1INNER JOIN test.t1 t3 ON t3.id1 t.id1 AND t3.id2 2
WHERE t.id2 = 3");

while($l=mysql_fetch_row($lid1)) // Warning : mysql_fetch_row(): supplied argument is not a valid MySQL result resource...
{
    echo $l[0];
}

Quand je transforme ma requete ne :

$lid1 =mysql_query("SELECT tmain.cp FROM test.t1 t

INNER JOIN test2.t2 tmain ON tmain.id1 = t.id1           (table t au lieu de t1)

INNER JOIN test.t1 t2 ON t2.id1 t.id1 AND t2.id2 1

INNER JOIN test.t1 t3 ON t3.id1 t.id1 AND t3.id2 2

WHERE t.id2 = 3");
je n'ai plus d'erreur, mais je n'ai plus aucun résultat retourné...
0
Rejoignez-nous