簡體   English   中英

MySQL:從三個表中進行選擇?

[英]MySQL: SELECT from three tables?

我對帶有三個表的MySQL查詢有疑問。 我想搜索一個名稱並獲取所有(甚至最好是第一個)電話號碼和電子郵件。 這是我的桌子:

Table 1, contact
==========
id | name
==========
1  | stefan
2  | michael
3  | andy
4  | bob

Table 2, phone
==============================
id | contact_id | phonenumber
==============================
1  | 1          | +1 434 434232
2  | 1          | +1 434 24234
3  | 2          | +1 89234
4  | 4          | +1 345345
5  | 4          | +1 434 7567567

Table 3, email
===============================
id | contact_id | emailaddress
===============================
1  | 1          | stefan@home.com
2  | 1          | stefan@work.com
3  | 1          | stefan@mars.com
4  | 4          | bob@anywhere.com
5  | 2          | michael@nothing.com

這是我的查詢,將MySQL發送到必殺技:

SELECT c.name, p.phonenumber, e.emailaddress
FROM contact AS c
JOIN phonenumber AS p ON c.id = p.contact_id
JOIN email AS e ON c.id = e.contact_id
WHERE c.name = 'michael'

當我只做一個連接時,它的工作原理如下:

SELECT c.name, p.phonenumber
FROM contact AS c
JOIN phonenumber AS p ON c.id = p.contact_id
WHERE c.name = 'michael'

有任何想法嗎?

謝謝

麥克風

嘗試這個:

SELECT c.name, p.phonenumber, e.emailaddress
FROM name_of_your_schema.contact AS c
JOIN name_of_your_schema.phone AS p ON c.id = p.contact_id
JOIN name_of_your_schema.email AS e ON c.id = e.contact_id
WHERE c.name = 'stefan'
LIMIT 1;

湯姆·L

嘗試

SELECT c.name, p.phonenumber, e.emailaddress
FROM contact c
INNER JOIN phone p ON c.id = p.contact_id
INNER JOIN email e ON p.contact_id = e.contact_id
WHERE c.name = 'michael'

要使每個聯系人僅獲得一個結果,您可能會以某種非常規的方式使用聚合。 我修改了@Emanuel Saringan的查詢:

SELECT c.name, min(p.phonenumber), min(e.emailaddress)
FROM contact c
left JOIN phone p ON c.id = p.contact_id
left JOIN emailaddress e ON c.id = e.contact_id
WHERE c.name = 'michael'
GROUP BY c.id

看到它在這里工作: http : //sqlfiddle.com/#!2/6a8700/2

暫無
暫無

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

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