2016-04-09 6 views
0

互いに(MySQLの)に関連する3つのテーブルからの情報を見つける方法:私のようなすべての情報について <strong>ディーラー</strong>持つ<code>MySQL</code>にデータベース<strong>ディーラー</strong>を作成している

 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 

し、この情報をすなわち、3つのテーブルに格納されている:

dealer 
    address 
    contact_person 

テーブルのフィールドとデータを以下に示す:

この表ディーラーは、dealer_idを主キーとしています。

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

この表アドレスは、プライマリkeyandフィールドがテーブルディーラーのフィールドへの参照がをdealer_id外部キーとしてをadd_dealer_idとしてフィールドをdealer_address_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とフィールドがフィールドのテーブルディーラーにも参照がをdealer_id外部キーとしてをcp_dealer_idています。

`mysql> select * from contact_person; 
    +-------------------+--------------+-----------------+------------------------+ 
    | contact_person_id | cp_dealer_id | con_per_name | con_per_email   | 
    +-------------------+--------------+-----------------+------------------------+ 
    |    1001 |   101 | Michael S. Dell | [email protected] |  
    |    1002 |   101 | Sam Greenblatt | [email protected]  |  
    |    1003 |   102 | Jerry Shen  | [email protected] |  
    |    1004 |   103 | Dion J. Weisler | [email protected]  |  
    +-------------------+--------------+-----------------+------------------------+ 
    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 ` 

だから私はこれを行うのですか私を助けてください?

+1

:このデータベースは、違法薬物に関連している。ここ

は一例ですか? mysqlselfを助けることができませんでした。ここジェイメイソン@ –

答えて

1

あなたが探しているのは、MySQLのジョインステートメントです。オフトピック

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

は、(内部は3つのテーブルに参加)私もやったことある ディーラーD * FROM を選択a.' ON contact_person CP ON d.dealer_id = cp.cp_dealer_id 登録しよアドレス を登録しようadd_dealer_id' = d.'dealer_id' GROUP BY d.'dealer_id'、 cp.'con_per_name'; これは私にディーラーに関するすべての情報を提供します。 しかし、具体的にはdealer_idまたはdealer_nameで検索したい場合はどうすればいいですか? –

+0

インターネットからコピーしてテーブル名を変更しなかったので、これはうまくいかなかったのですか?かなり確実に "a" "d"と "cp"はあなたのテーブル名ではありません。 –

+0

@ Jay Masonはテーブル自体に使用されているため、動作しました。 私はテーブル名の後ろに "a"、 "d"、 "cp"を使用しています。ジェイメイソン@とあなたの懸念の –

関連する問題

 関連する問題