2017-10-18 121 views
0

背景:我將InnoDB用作MySQL的引擎和PDO來執行SQL。獲取引用外鍵的ID值

我是新來的外鍵,但我有一個包含suffix_id場,此表中的suffix_id字段引用的數據suffix表中id領域的customers數據表。我被告知要這樣做的原因是,最有可能是名稱後綴的重複值,並且具有外鍵約束的應該會提高性能。

我不明白的是如何從suffix表中獲得id的值。我知道如何是唯一的方法來執行一個SQL查詢是這樣的:

SELECT `id` FROM `suffix` WHERE `description` = ? 

,然後從該查詢傳遞值到我的「真實」的查詢作爲這樣一個單獨的命令:

SELECT ... FROM `customers` WHERE ... AND `suffix_id` = [value from earlier query] 

但對我來說,這似乎無法運行兩個單獨的命令。是否有另外一種方法來獲取外鍵在同一個查詢中引用的id值作爲我的「真實」查詢?

+0

你真的在'後綴表','描述'或'id'中得到了什麼? – Swellar

+0

我正在尋找描述,所以我需要從後綴表中獲取id,以便將其包含在我的客戶搜索的where子句中。 – David

+0

難怪流程看起來顛倒了,您正在使用它進行搜索。 「說明」的內容是什麼? – Swellar

回答

0
SELECT b.id 
FROM `customers` a INNER JOIN `suffix` b ON a.suffix_id = b.id 
WHERE suffix_id = some_value; 

你要查找的概念JOINS這是用來結合表:https://dev.mysql.com/doc/refman/5.7/en/join.html

+0

感興趣OP正在尋找一種方法來獲取'id'作爲' suffix_id',這與你的答案完全不同。 OP沒有任何東西可以放在你的WHERE條款中 – Swellar

+1

不,這正是我所期待的。如果我沒有正確地說出我的問題,我很抱歉。 – David

0

既然要實現搜索,你可能會需要LIKE,並且還可以結合這兩個查詢合併爲一個:

SELECT customer.* 
FROM customer 
    INNER JOIN suffix ON suffix.id = customer.suffix_id 
WHERE suffix.description LIKE ? 

這將取決於您有多嚴格LIKE將是。