SQL:如果列B的值与另一个表中的列B匹配,则显示列A的值

时间:2012-08-10 00:01:43

标签: mysql

我一直试图解决这个问题几个小时,有很多类似的话题,但似乎仍然无法找到我的答案。 我希望有人可以帮助我,这就是我要做的事情:

我有一张名为“品牌”的表格和一张名为“product”的表格 我正在尝试构建一个查询,如果该表中的brand_id与表“品牌”中的brand_id相同,则会显示表“product”中的product_id。

基本上我有,品牌表:

brand_name    brand_id
a             1
b             2
c             3

和产品表:

product_id    brand_id
23            2
24            1
25            2
27            3 
28            3

现在,如果选择了brand_id 3,我想用brand_id 3来显示所有product_id。

我到目前为止:

SELECT brand_id, brand_name, from " . TABLE_BRAND . " order by brand_name";

SELECT product_id from " . TABLE_PRODUCT . where brand_id = '" . (int)$brands['brand_id'] . "'");

有人能帮助我像我描述的那样开始工作吗? 此致

2 个答案:

答案 0 :(得分:2)

我建议您使用ANSI SQL-92语法而不是ANSI SQL-89语法,因为如果未将结果正确地加入CROSS JOIN。的 Read something HERE: ANSI SQL-92 INNER JOIN.

SELECT  a.Product_ID, b.brand_name
FROM    `product` a 
            INNER JOIN  `brand` b
                ON a.brand_id = b.brand_ID
-- WHERE a.Product_ID = valueHERE       -- <== place condition here :)

答案 1 :(得分:0)

也许这个?

SELECT
    b.brand_name,
    p.product_id
FROM
    brand AS b,
    product AS p
WHERE
    b.brand_id = p.brand_id