2010-05-09 33 views
7

Trong một số ngôn ngữ (ColdFusion xuất hiện trong đầu), bạn có thể chạy truy vấn trên tập hợp kết quả từ truy vấn trước đó. Có thể làm một cái gì đó như thế trong php (với MySQL là cơ sở dữ liệu)?php có thể truy vấn kết quả từ truy vấn trước đó không?

tôi loại muốn làm:

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

Không thực sự trả lời câu hỏi của bạn, nhưng những gì về việc sử dụng một VIEW SQL để thay thế? – Sylvain

Trả lời

6

Không có chức năng MySQL như thế này cho PHP, tuy nhiên có một tiên tiến hơn substitute cho nó.

Chỉnh sửa: Đối với những người bạn không biết truy vấn truy vấn là gì, chính xác điều này và có mục đích là một số người làm như vậy. Sử dụng toán tử AND là **** KHÔNG **** điều tương tự! Nếu tôi muốn kết quả trong đó username = 'animuson' cho một phần của tập lệnh của tôi và sau đó muốn tất cả kết quả từ truy vấn đó ở trạng thái = '1', tôi không thể chạy truy vấn khác bằng toán tử AND, hợp lý hơn nhiều để lặp qua các kết quả trước đó trong PHP. Ngừng upvoting những thứ mà không đọc các ý kiến ​​về lý do tại sao họ không được bình chọn ở nơi đầu tiên, đó chỉ là lười biếng. Nếu bạn không có một đầu mối những gì đang được nói đến, bạn không nên upvoting hoặc downvoting ở nơi đầu tiên.

2

Vâng, bạn có thể muốn làm điều này mà không cần chạm vào db:

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

Trong PHP, nó sẽ là khủng khiếp không hiệu quả. Bạn sẽ phải lặp qua từng hàng và kiểm tra xem name của nó có phải là trout hay không. Tuy nhiên, có lý do nào bạn không thể làm

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

trong SQL? Nó sẽ nhanh hơn rất nhiều.

+0

Tôi không nghĩ rằng bạn hiểu mục đích của truy vấn truy vấn. – animuson

+0

Sẽ không tìm kiếm nó trong bộ nhớ của PHP được nhanh hơn búa trên một DB lớn một lần nữa? Tôi có thể sai mặc dù. – Robus

+0

@Robus: Có thể. Nếu bạn nhận được 100 trong số 1.000 kết quả với truy vấn cá ban đầu, tốt hơn bạn nên tìm kiếm trong PHP thay vì chọn lọc lại 1.000 kết quả bằng một truy vấn bổ sung. – animuson

0

Sử dụng từ khóa AND?

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

Ngoài ra, bạn có thể sử dụng LINQ cho php http://phplinq.codeplex.com/

+0

Điều gì sẽ xảy ra nếu bạn muốn kết quả cho truy vấn cá và sau đó là kết quả cộng với cá hồi? Sau đó, bạn phải chạy hai truy vấn riêng biệt ... – animuson

1

Bạn cũng có thể làm điều gì đó như

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

Đây chỉ là một cách phức tạp và chậm hơn nhiều khi sử dụng toán tử AND. – animuson

Các vấn đề liên quan