我在MySQL中有2个表,在这两个表中我都有merchant_id,商家,分支和其他一些字段,一个表的名称是商家,另一个表是产品。
tbl_merchant:
id | merchant_id | merchant_name | branch | ...
------+---------------+--------------------+----------------+
1 | 1001 | McDonalds | branch 1 mcd | ...
2 | 2002 | KFC | branch 1 kfc | ...
tbl_product:
id | product_id | product_name | price | merchant_id
------+---------------+-----------------+---------+-------------
1 | 100101 | Chicken | 10 | 1001
2 | 100102 | Potato | 5 | 1001
3 | 100101 | Burger | 10 | 2002
4 | 100102 | Fish Fillet | 10 | 2002
我想知道如何使用产品_id = 100101和merchant_id = 1001的SQL WHERE子句显示merchant_name,从两个表中分支?
像这样:
Result :
id | merchant | branch | product_name | price
------+-------------+----------------+---------------+-------
1 | McDonalds | branch 1 mcd | Chicken | 10
谢谢
答案 0 :(得分:0)
试试这个:
select * from marchant join product on marchant.id=product.merchant_id where merchant_id = 1001
此声明将两个表连接在一起,其中主键形式商家等于产品中的merchant_id。
答案 1 :(得分:0)
首先,我将向您展示查询,然后我会逐行解释每个部分,以帮助您理解:
SELECT
merchant_name, branch
FROM
tbl_merchant INNER JOIN tbl_product ON (tbl_product.merchant_id = tbl_merchant.merchant_id)
WHERE
product_id = 100101 AND merchant_id = 1001
好的,所以如果我们看一下select之后的第一部分,应该很清楚将要打印出的两列是merchant_name和branch。根据您的输出,您可以通过将其名称添加到列表中来打印任一表中的任何字段。如果该字段在两个表中都具有相同的名称,那么您需要对其进行限定:
SELECT
tbl_merchant.id, tbl_product.id
FROM
tbl_merchant INNER JOIN tbl_product USING(merchant_id)
此查询的棘手部分是将两个表连接在一起的行。基本上你现在拥有的是两个由商家ID链接在一起的表格,这是有道理的,因为1个商家可以拥有许多产品(即1对多的关系)。我假设商家ID是唯一的。然后,连接将具有相同merchant_id的所有行组合在一起(在其中一个表中是唯一的,因此保证是正确的)。更具体地说,您可以将其视为合格的交叉产品,其中来自tbl_product的每个元组与来自tbl_merchant的每个元组连接,然后根据条件tbl_product.merchant_id = tbl_merchant.merchant_id进行限定。
查询的最后一部分(WHERE子句)根据提供的条件简单地删除行。
答案 2 :(得分:0)
对此的查询是:
SELECT merchant_name,branch 从 tbl_merchant 内部联接 tbl_product ON(tbl_product.merchant_id = tbl_merchant.merchant_id) 哪里 product_id = 100101 AND merchant_id = 1001
答案 3 :(得分:0)
SELECT merchants.id, merchants.merchant_id, merchants.branch, products.product_name, products.price
FROM merchants
INNER JOIN products ON products.merchant_id = merchants.merchant_id
WHERE merchants.merchant_id = 1001 AND products.product_id = 100101
您可以使用JOIN来解决此类查询
有一些很好的文章可以通过visula解释来了解更多关于JOIN的信息::
1)http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/" SQL连接的可视化解释"
2)http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins" SQL连接的可视化表示"