2016-10-16 6 views
-1

私は、各ユーザが複数の電話番号と複数のメールアドレスを持つことができるように、ユーザテーブルと連絡先情報テーブルを持っています。主要連絡先情報を設定して取得する標準的な方法はありますか?ユーザのプライマリ電子メールアドレスを取得するmysql phpのベストプラクティス

"人間" テーブル

ID | name 
1 | John 
2 | Joan 

"human_contact" テーブル

ID | contact_type | contact_info | user_id 
1 | email  | [email protected] | 1 
2 | email  | [email protected] | 1 

"チケット" テーブル

ID | human_id | event_date 
1 | 1  | 2017-08-01 

ジョンは、通常、私はどのように、[email protected]を使用している場合その行をお気に入りとしてマークし、ほとんどのクエリでその行を取得しますか?

SELECT * 
FROM tickets 
LEFT JOIN humans 
ON tickets.human_id=humans.ID 
LEFT JOIN human_contact 
ON human_contact.human_id=humans.ID 
WHERE tickets.ID='112' 
+0

チケットテーブルには何がありますか? – kbball

+0

@kbball上記で編集して「チケット」テーブルを追加しました:)ありがとうございました –

+0

お気に入りを作成するcontact_infoはどのように選択する必要がありますか? – kbball

答えて

0

あなたはブール値を持つことになりますFAVという名前の余分なcoloumnを使用することができます。これは、最初に彼がfav == trueのチェックを使用してfavを持っているかどうかを調べるのに役立ちます。そのcontact_infoで続行するか、またはユーザーがお気に入りを持っていない場合は、通常のクエリーに進みます。ある

、このことができ、より簡単にunderstanding.Hopeため

if(query(fav==1 for atleast 1 tuple)){ 
    return tuple with fav==1; 
else{ 
    query (usual query to get contact_info); 
    return query_result; 
} 

+0

申し訳ありませんが、完全な問い合わせフォームに入れてください。私はタプルを理解していないと私はクエリで使用したことがない –

関連する問題