簡體   English   中英

如何從彼此相關的三個表中查找信息(MySQL)

[英]How to find information from three tables related to each other (MySQL)

我在MySQL創建了一個數據庫經銷商 ,其中包含有關經銷商的所有信息,例如:

     dealer id
     dealer name
     dealer email
     dealer phone no
     dealer's primary address
     dealer's billing address
     dealer's contact person
     dealer's contact person's name
     dealer's contact person's email

並且此信息存儲在三個表中,即:

    dealer
    address
    contact_person

表的字段和數據如下:

該表的發牌人Dealer_id作為主鍵。

    `mysql> select * from dealer;
    +-----------+-------------+----------------+-----------------+
    | dealer_id | dealer_name | dealer_email   | dealer_phone_no |
    +-----------+-------------+----------------+-----------------+
    |       101 | dell        | dell@gmail.com |      9000000000 |
    |       102 | asus        | asus@gmail.com |      8000000000 |
    |       103 | hp          | hp@gmail.com   |      7000000000 |
    +-----------+-------------+----------------+-----------------+
    3 rows in set (0.02 sec)
    `

該表地址具有字段Dealer_address_id作為主鍵,以及字段add_dealer_id作為外鍵,它引用表經銷商的字段Dealer_id

    `mysql> select * from address;
    +-------------------+---------------+----------------------+-------------+----------------+
    | dealer_address_id | add_dealer_id | add_line1            |  city       |   address_type |
    +-------------------+---------------+----------------------+-------------+----------------+
    |             10001 |           101 | 1, Dell Avenue       | Round Rock  | Primary        |
    |             10002 |           101 | 1, Dell Avenue       | Round Rock  |  Billing       |
    |             10003 |           102 | 1, Asus Computer     | Fremont     |  Primary       |
    |             10004 |           102 | 1, Asus Headquarters | Taipei      | Billing        |
    |             10005 |           103 | HP Inc               | Palo Alto   |  Primary       |
    |             10006 |           103 | HP Inc               | Bristol     |  Billing       |
    +-------------------+---------------+----------------------+-------------+----------------+
    6 rows in set (0.01 sec)
    `

並且此表contact_person的字段contact_person_id為主鍵,而cp_dealer_id字段為外鍵,該表還引用了發人的字段Dealer_id

    `mysql> select * from contact_person;
    +-------------------+--------------+-----------------+------------------------+
    | contact_person_id | cp_dealer_id | con_per_name    | con_per_email          | 
    +-------------------+--------------+-----------------+------------------------+
    |              1001 |          101 | Michael S. Dell | michael.dell@gmail.com |       
    |              1002 |          101 | Sam Greenblatt  | sam.dell@gmail.com     |      
    |              1003 |          102 | Jerry Shen      | jerry.asus@gmail.com   |     
    |              1004 |          103 | Dion J. Weisler | dion.hp@gmail.com      |      
    +-------------------+--------------+-----------------+------------------------+
    4 rows in set (0.01 sec)`

我想查找有關經銷商的所有信息,例如:

    dealer id
     dealer name
     dealer email
     dealer phone no
     dealer's primary address
     dealer's billing address
     dealer's contact person
     dealer's contact person's name
     dealer's contact person's email

例如我有查詢:

    `Find dealer on the basis of dealer id `

    `Find dealer on the basis of dealer name `

    `Find dealer on the basis of dealer email `

因此,請幫助我該怎么做?

您正在尋找的是MySQL中的join語句。

這是一個例子:

SELECT Dealer.dealer_id, Dealer.Name, Dealer.Email
FROM Dealer
INNER JOIN Address
ON Dealer.dealer_id=Address.dealer_id;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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