2017-10-18 20 views
0

背景:SQLを実行するために、InnoDBをエンジンとして、PDOを使用してMySQLを使用しています。外部キーを参照するID値を取得する

私は外部キーに新しいですが、私はsuffix_idフィールドが含まれているcustomersデータテーブルを持って、このテーブルのsuffix_idフィールドはsuffixデータテーブルにidフィールドを参照します。私がこれをするように言われた理由は、名前の接尾辞の値が重複する可能性が高く、外部キー制約を持つとパフォーマンスが向上するということです。

suffixテーブルからid値を取得する方法がわかりません。私はこのようなSQLクエリを実行するのがいかにに知っている唯一の方法:

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

そして、このような別のコマンドとしての私の「本物」のクエリにそのクエリから値を渡す:

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

私にとっては、これは2つの別々のコマンドを実行することは非効率的だと思われます。私の "本当の"クエリと同じクエリで外部キーが参照すると想定されるid値を取得する別の方法はありますか?あなたはの概念を検索したいと思う

+0

あなたは本当に 'suffix'テーブル、' description'や 'id'に入っていますか? – Swellar

+0

私は説明を探しているので、顧客検索のwhere句に含めるには接尾辞テーブルからIDを取得する必要があります。 – David

+0

フローが逆に見えても、あなたはそれを検索に使用しています。 'description'の内容は何ですか? – Swellar

答えて

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

のテーブルを結合するために使用されるジョイン:あなたが検索を実装しているので、あなたはおそらくLIKEが必要になります。また、これら二つのクエリを組み合わせることができますhttps://dev.mysql.com/doc/refman/5.7/en/join.html

+0

に興味があるかもしれません。OPは' id'を 'あなたの答えとはまったく異なっています。 OPはあなたの 'WHERE'節に値として入れるものは何も持っていません – Swellar

+1

いいえ、これはまさに私が探していたものでした。私は私の質問を正しく言わなかったら謝ります。 – David

0

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

LIKEの厳格さはあなた次第です。

関連する問題