На некоторых языках (ColdFusion приходит на ум), можно выполнить запрос на наборе результатов от предыдущего запроса. Действительно ли возможно сделать что-то как этот в php (с MySQL как база данных)?
Я сортирую, хотите сделать:
$rs1 = do_query( "SELECT * FROM animals WHERE type = 'fish'" );
$rs2 = do_query( "SELECT * FROM rs1 WHERE name = 'trout'" );
Подобной функции MySQL для PHP нет, однако для нее есть более продвинутая замена .
Изменить: Для тех из вас, кто не знает, что такое запрос запросов, это именно то, и есть цель, с которой некоторые люди делают это так. Использование оператора И - это **** НЕ **** одно и то же! Если мне нужны результаты, где username = 'animuson' для одной части моего скрипта, а затем мне нужны все результаты из этого запроса, где status = '1', мне не логично запускать другой запрос с использованием оператора AND, это Намного логичнее перебрать предыдущие результаты в PHP. Прекратите голосовать за вещи, не читая комментариев о том, почему за них не проголосовали вообще, это просто лень. Если вы не имеете ни малейшего представления о том, о чем идет речь, вам не следует голосовать за или против.
Использовать ключевое слово AND?
"SELECT * FROM animals WHERE type = 'fish' and name='trout'"
Кроме того, вы можете использовать LINQ для php http://phplinq.codeplex.com/
В PHP это было бы ужасно неэффективно. Вам нужно будет просмотреть каждую строку в цикле и убедиться, что ее имя
было форель
. Однако по какой причине вы не можете выполнить
SELECT * FROM `animals` WHERE `type` = 'fish' AND `name` = 'trout'
в SQL? Было бы намного быстрее.
Возможно, вы захотите сделать это, не трогая db:
while($t = mysql_fetch_array($rs1)){
if($t[name] == 'trout'){
echo 'This is the one we\'re looking for!';
break;
}
}
Вы также можете сделать что-то вроде
select morestuff from (select stuff from table where a = b ) where c = d;