2010-05-09 26 views
7

In alcune lingue (ColdFusion mi viene in mente), è possibile eseguire una query sul set di risultati da una query precedente. È possibile fare qualcosa del genere in php (con MySQL come database)?php può interrogare i risultati di una query precedente?

I sorta di voglia di fare:

$rs1 = do_query("SELECT * FROM animals WHERE type = 'fish'"); 
$rs2 = do_query("SELECT * FROM rs1 WHERE name = 'trout'"); 
+0

Non proprio rispondere alla tua domanda, ma per quanto riguarda utilizzando una vista SQL, invece? – Sylvain

risposta

6

Non esiste una funzione di MySQL come questo per PHP, tuttavia v'è una più avanzata substitute per esso.

Modifica: Per quelli di voi che non sanno cosa sia una query di query, è esattamente questo e c'è uno scopo che alcune persone fanno in questo modo. Usare un operatore AND è **** NON **** la stessa cosa! Se voglio risultati dove username = 'animuson' per una parte del mio script e poi voglio tutti i risultati da quella query dove status = '1', non è logico per me eseguire un'altra query usando un operatore AND, è molto più logico per scorrere i risultati precedenti in PHP. Smettila di fare pubblicità alle cose senza leggere i commenti sul motivo per cui non sono stati upvoted in primo luogo, è solo pigro. Se non hai la minima idea di cosa si sta parlando, non dovresti essere upvoting o downvoting in primo luogo.

2

Beh, si consiglia di fare questo senza toccare il db:

while($t = mysql_fetch_array($rs1)){ 
    if($t[name] == 'trout'){ 
     echo 'This is the one we\'re looking for!'; 
     break; 
    } 
} 
1

In PHP, sarebbe terribilmente inefficiente. Dovresti scorrere ogni riga e controllare che il suo name sia trout. Tuttavia, c'è qualche motivo per cui non si può fare

SELECT * FROM `animals` WHERE `type` = 'fish' AND `name` = 'trout' 

in SQL? Sarebbe molto, molto più veloce.

+0

Non penso che tu abbia compreso lo scopo di una query di query. – animuson

+0

Non lo cerchereste nella memoria di PHP essere più veloce di battere ancora su un grande DB? Potrei sbagliarmi comunque. – Robus

+0

@Robus: probabilmente. Se ottieni 100 risultati su 1.000 con la query iniziale su fish, sarebbe molto meglio cercare in PHP piuttosto che passare di nuovo a 1000 risultati con una query aggiuntiva. – animuson

0

Utilizzare la parola chiave AND?

"SELECT * FROM animals WHERE type = 'fish' and name='trout'" 

Inoltre, è possibile utilizzare LINQ per PHP http://phplinq.codeplex.com/

+0

Cosa succederebbe se volessimo i risultati per la query sui pesci e poi i risultati più la trota? Quindi devi eseguire due query separate ... – animuson

1

Si può anche fare qualcosa di simile

select morestuff from (select stuff from table where a = b) where c = d; 
+1

Questo è solo un modo più complicato e molto più lento di utilizzare un operatore AND. – animuson

Problemi correlati