簡體   English   中英

從2個表中按ID選擇SQL WHERE子句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM