![](/img/trans.png)
[英]SQL Query to select from a table using a WHERE clause on another table
[英]Select from 2 table SQL WHERE Clause by ID
我在MySQL中有2個表,在這兩個表中,我都有商人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
我想知道如何顯示SQL_WHERE子句通過product_id = 100101和商人_id = 1001從兩個表中分支出來的商人名稱?
像這樣 :
Result :
id | merchant | branch | product_name | price
------+-------------+----------------+---------------+-------
1 | McDonalds | branch 1 mcd | Chicken | 10
謝謝
嘗試這個:
select * from marchant join product on marchant.id=product.merchant_id where merchant_id = 1001
該語句將把兩個表連接在一起,其中主鍵形式商人等於產品中的商人ID。
首先,我將向您顯示查詢,然后逐行解釋每個部分以幫助您理解:
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之后的第一部分,應該清楚將要打印的兩列是商人名和分支。 根據您的輸出,只需將其名稱添加到列表中,就可以打印出任一表中的任何字段。 如果兩個表中的字段名稱相同,則需要像這樣對它進行限定:
SELECT
tbl_merchant.id, tbl_product.id
FROM
tbl_merchant INNER JOIN tbl_product USING(merchant_id)
該查詢的棘手部分是將兩個表連接在一起的行。 從本質上講,到目前為止,您已經擁有兩個通過商戶ID鏈接在一起的表,這很有意義,因為1個商戶可以擁有許多產品(即一對多關系)。 我假設商家ID是唯一的。 然后,聯接將具有相同商人ID的所有行配對(這在表之一中是唯一的,因此保證是正確的)。 更具體地說,您可以將其視為合格的叉積,其中tbl_product中的每個元組與tbl_merchant中的每個元組合並,然后根據條件tbl_product.merchant_id = tbl_merchant.merchant_id進行限定。
查詢的最后一部分(WHERE子句)僅根據提供的條件消除行。
該查詢是:
選擇商人名稱,從tbl_merchant內部聯接中分支tbl_product ON(tbl_product.merchant_id = tbl_merchant.merchant_id)WHERE product_id = 100101 AND商人ID = 1001
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聯接的可視表示”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.