mysql查询 - 仅从另一个表中选择id = id,并在该表中的字段=值

时间:2011-10-04 09:54:46

标签: php mysql

我的标题可能无法解释我在寻找什么,这是我目前为商店提供产品的疑问:

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')

所以它只显示粉红色的产品,颜色在单独的表格中。我已经找到了答案,但我似乎无法找到解释我的情况,也许是因为我不知道我到底在寻找什么,感谢任何帮助。

3 个答案:

答案 0 :(得分: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 :(得分:1)

也许是内部联接?

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

答案 2 :(得分:0)

您需要将颜色表添加到查询中:

FROM Items,colour

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

但我发现你的颜色表中有product_id。为什么不在Items表中执行反向添加颜色ID。