Faire un SELECT * WHERE xxxx est contenu dans un tableau

Faire un SELECT * WHERE xxxx est contenu dans un tableau - PHP - Programmation

Marsh Posté le 05-07-2005 à 10:41:57    

Bonjour,
 
Suite à deux requettes, j'ai un tableau d'ID_ABS commun aux deux résutats.  
je cherche à faire un select dans une table sur le champs ID_ABS
et je souhaite passer en parametre à mon WHERE ce tableau de resultats communs.
 
Est-ce possible ??? si oui, est-ce que quelqu'un peut m'aider pour la syntaxe.
Ou y a t'il une solution pour faire ça en une seule requette ???
 
J'en suis là :
 
$requete1 = "SELECT * from $nomtable WHERE DATEA_ABS>='$dateA' ORDER BY NOM_ABS";
$requete2 = "SELECT * from $nomtable WHERE DATEP1_ABS<='$dateP' ORDER BY NOM_ABS";
$result1 = mysql_query($requete1,$link) or die ('Erreur : '.mysql_error() );
$result2 = mysql_query($requete2,$link) or die ('Erreur : '.mysql_error() );
$total1 = mysql_num_rows($result1); // nombre de réponse 1
$total2 = mysql_num_rows($result2); // nombre de réponse 2
$i=0; $j=0;
while ($row1 = mysql_fetch_array($result1)) { $tabRow1[$i] = $row1['ID_ABS']; $i++; }
while ($row2 = mysql_fetch_array($result2)) { $tabRow2[$j] = $row2['ID_ABS']; $j++; }
 
// Recup des ID_ABS en commum aux deux tab  
$row3 = array_intersect ($tabRow1, $tabRow2);
 
// Recup  
$requete = "SELECT * from $nomtable WHERE ID_ABS FROM $row3"; // ??????
$result = mysql_query($requete,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
 
Merci pour vos lumières.

Reply

Marsh Posté le 05-07-2005 à 10:41:57   

Reply

Marsh Posté le 05-07-2005 à 10:59:18    

j'ai pas tout capté, mais je pense que tu veux un truc du genre :

Code :
  1. $in = '('.join(',', $row3).')';
  2. $requete = 'SELECT * from $nomtable WHERE ID_ABS IN '.$in;


PS: au lieu de faire 2 requetes au début puis un array_intersect, tu peux réduire à une seule requete

Reply

Marsh Posté le 05-07-2005 à 11:02:21    

si mes souvenir en bdd sont pas trop mauvais tu doit pouvoir faie un truc du genre
 
$requete= "SELECT * from nomtable,row3 WHERE ID_ABS.nomtable = ID_ABS.row3;

Reply

Marsh Posté le 05-07-2005 à 11:05:48    

maire106 a écrit :

si mes souvenir en bdd sont pas trop mauvais tu doit pouvoir faie un truc du genre
$requete= "SELECT * from nomtable,row3 WHERE ID_ABS.nomtable = ID_ABS.row3;


je pense que tes souvenirs sont un peu flous ;), tu mélanges allègrement table/attributs/variable php...

Reply

Marsh Posté le 05-07-2005 à 11:13:44    

Merci Soju, ça marche tip top en modifiant un peu
 
$in = '('.join(',', $row3).')';  
$requete = "SELECT * from $nomtable WHERE ID_ABS IN $in";

Reply

Marsh Posté le 05-07-2005 à 11:15:47    

ppierrick a écrit :

Merci Soju, ça marche tip top en modifiant un peu


oups oui, j'avais mis des guillemets simples en oubliant $nomtable

Reply

Marsh Posté le 05-07-2005 à 11:22:01    

oui il date de deux ou trois ans!! desole, la prochaine fois je me tais . et en plus je faisait de la bdd pure et dure pas avec du php

Reply

Marsh Posté le 05-07-2005 à 11:37:59    

en fait tu peux même réduire le tout à une seule requete, je te laisse deviner

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed