2011-10-04 51 views
0

我的標題可能無法解釋我在找什麼,這是我當前查詢拉入商店的產品:mysql查詢 - 只能選擇id = id從另一個表和該表中的字段=值

mysql_query("SELECT * FROM Items 
      WHERE ((Items.menu_id='$menu_id' AND Items.status='1') 
        $colour_sql) 
      $order_sql 
      LIMIT $lim_from,$limit_per_page"); 

在那裏說:$ colour_sql我想擁有的財產以後,說的部分:

AND (Items.id=colour.product_id AND colour.colour='pink') 

所以它只能說明是粉紅色的產品,顏色在一個單獨的表之中。我尋找答案,但我似乎無法找到一個解釋我的情況,也許是因爲我不知道我到底是什麼,尋找任何幫助表示感謝。

+0

你應該使用mysql加入。 – Robot

回答

2

如果你想加入表colour你需要做一個連接或子選擇。

加入

$menu_id = mysql_real_escape_string($menu_id); 
mysql_query = "SELECT i.* 
    FROM items i 
    INNER JOIN colour c ON (c.product_id = i.id) 
    WHERE i.menu_id = '$menu_id' 
    AND i.status = '1' 
    AND c.colour = 'pink' 
    ORDER BY ..... 
    LIMIT {intval($limit_per_page)} OFFSET {intval($lim_from)} "; 

子選擇

$menu_id = mysql_real_escape_string($menu_id); 
mysql_query = "SELECT i.* 
    FROM items i 
    WHERE i.menu_id = '$menu_id' 
    AND i.status = '1' 
    AND i.id IN (SELECT c.product_id FROM colour c WHERE c.colour = 'pink') 
    ORDER BY ..... 
    LIMIT {intval($limit_per_page)} OFFSET {intval($lim_from)} "; 
1

也許是一個內部連接?

[...] 
FROM Items 
INNER JOIN colour 
ON colour.id = Items.colour_id 
WHERE [blablabla] 
AND colour.colour = 'pink' 
+0

感謝隊友,這是漫長的一天:)作品 – Zephni

+0

不客氣! (來吧,這只是星期二....) – Dippi

0

您需要的顏色表添加到您的查詢:

FROM Items,colour 

From Items INNER JOIN colour ON Items.id = colour.product_id 

但我觀察到您的顏色表中有product_id。爲什麼不在你添加顏色標識的Items表中做相反的處理。

+0

產品可以有多種顏色,所以我不能這樣做,如果我理解正確 – Zephni

+0

這只是一個觀察:) – denil

相關問題