2011-10-04 32 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

相关问题