簡體   English   中英

MySQL查詢來自查詢結果的php

[英]MySQL query from a query result in php

如果我想在php中查詢查詢結果,我該怎么辦? 我有這個...

$result = mysql_query("SELECT * FROM tbl_x WHERE tbl_x.attribute = y");

現在我需要查詢$ result來過濾我從查詢中得到的結果。 請注意,我不想這樣做......

$result2 = mysql_query("SELECT * FROM ( SELECT * FROM tbl_x WHERE tbl_x.attribute = y ) AS tbl_x1 WHERE tbl_x1... etc");

我想避免這種情況的原因是我在執行這樣的查詢時遇到“重復列”錯誤。

我正在尋找像......

$result = mysql_query("SELECT * FROM tbl_x");
$result2 = mysql_query_result($result);

您可以在搜索條件中應用多個術語,以AND分隔:

$result = mysql_query("SELECT * FROM tbl_x 
                       WHERE tbl_x.attribute = y 
                         AND tbl_x.attribute2 = z");

重新評論你的意見。 聽起來您正在使用實體 - 屬性 - 值設計。

為了匹配多個屬性,你必須做一些技巧。 通常,WHERE子句一次只能應用於一行。 但由於每個屬性都存儲在不同的行中,因此您需要執行以下兩種解決方案之一:

  1. 將多行連接成一行,這樣就可以在一個條件中對所有屬性使用WHERE。

     SELECT config_id FROM attributes AS s JOIN attributes AS c USING (config_id) JOIN attributes AS l USING (config_id) WHERE (s.attr, s.value) = ('size', 'M') AND (c.attr, c.value) = ('colour, 'green') AND (l.attr, l.value) = ('cloth', 'cotton); 
  2. 搜索多個屬性中的任何一個,然后如果匹配的行數等於您搜索的屬性數,則可以找到所有這些屬性。

     SELECT config_id FROM attributes WHERE (attr, value) = ('size', 'M') OR (attr, value) = ('colour', 'green') OR (attr, value) = ('cloth', 'cotton') GROUP BY config_id HAVING COUNT(DISTINCT attr) = 3; 

您仍然可以查詢查詢而不會出現“重復列”錯誤。 只需別名並命名列

 $result2 = mysql_query("SELECT tbl_x1.col1, tbl_x1.col2,...etc  FROM 
            (SELECT * FROM tbl_x WHERE tbl_x.attribute = y) AS tbl_x1 
             WHERE tbl_x1... etc");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM