2016-10-21 30 views
1

私はid、first、last、およびidentカラムを持つcontactsテーブルを持っています。大きな結合で表示する名前を取得しようとしています。私は両方の列を結合するときに表示することができません。MySQL 2つのカラムを1つのテーブルに結合する問題

テーブル:これは私のSELECT

点検 同上 ORDER_ID Inspector_Id

コンタクト 同上 FIRST_NAME LAST_NAME 発注者 インスペクタ

です:

$sql = " SELECT 
     Inspections.Id,  
     Inspections.Orderer_Id, 
     Inspections.Inspector_Id, 
     Contacts.Id 
     Contacts.First_Name AS OFirst, 
     Contacts.Last_Name AS OLast, 
     Contacts.First_Name AS IFirst, 
     Contacts.Last_Name AS ILast, 

FROM Inspections 
JOIN Contacts ON Inspections.Orderer_Id &&   Inspections.Inspector_Id=Contacts.Id 
WHERE 
       Inspections.Id = " . $trigger . ";"; 

これは最新の試みです。私はそれらに参加するには数多くの方法を試しましたが、検索中に見つけたコードを翻訳するのは苦労していると思います。どんな助けでも大歓迎です!

(構文エラーがクリーンアップされた後)インスペクタと発注者は、そうでない場合、あなたは二回表の別名を使用して連絡先に参加する必要があり、同じ人であればあなたの現在のクエリにのみ機能します
+0

3つの列の値はすべて同じですか? 2つの別々の式を指定する必要があります。 'Inspections.orderer_id = Contacts.id AND inspections.inspector_id = contacts.id'のように。しかし、それが必要な場合は、1つだけに参加し、where節の 'Inspections.orderer_id = Inspections.inspector_id'を比較することをお勧めします。 –

+0

あなたの結合条件に無効な構文があります: 'Inspections.Orderer_Id'はブール式ではありません。あなたは' Inspections.Orderer_Id = Contacts.Id'を意味すると思います。また、 '&&'は有効なSQLではないので、 'AND' – jmoerdyk

+0

@jmoerdykを使用する必要があります。一方、' AND'はSQLの伝統ですが、mysqlは式の中で '&&'と '||'を許可します。 [手動](http://dev.mysql.com/doc/refman/5.7/en/logical-operators.html#operator_and) –

答えて

0

SELECT 
     Inspections.Id,  
     Inspections.Orderer_Id, 
     Inspections.Inspector_Id, 
     orderer.Id AS OId, 
     orderer.First_Name AS OFirst, 
     orderer.Last_Name AS OLast, 
     inspector.Id AS IId, 
     inspector.First_Name AS IFirst, 
     inspector.Last_Name AS ILast  
FROM Inspections 
JOIN Contacts AS orderer ON Inspections.Orderer_Id = orderer.Id 
JOIN Contacts AS inspector ON Inspections.Inspector_Id = inspector.Id 
WHERE Inspections.Id = xxxx 
+0

OK、ここで何をしようとしているのか分かります。私は直接入力しようとしたが、それはないが、私は質問があります。どのように/どこでorderer.Idが実際にContacts.Idであると宣言していますか?インスペクタと同じです。私はそれらがテーブルエイリアスでなければならないが、それを設定する方法がわからないことがわかります。私は引き続きウェブを検索し、あなたの事例を再生します。あなたの継続していただきありがとうございます! – kayakerpaul

+0

心配しないでください!私はILastの後に "、"を追加するのを忘れました。 (私はさらに選択しています。これは完璧に働きました.1億円!回答者としてマークするのに十分な担当者がいませんでしたが、あなたはそれを釘付けにしました。 – kayakerpaul

+0

JOIN条件で、テーブル名の後にクエリのエイリアスを設定します。 'AS'の後の名前は' AS'の前にテーブルのエイリアスを設定します。ほとんどのSQLサーバでは 'AS'キーワードを省略できます。 – jmoerdyk

関連する問題