私はほとんどそこにいますが、私が必要とする結果をかなり返すわけではありません。複数の結合とコンパウンドを選択したMySQLクエリ
私は3つのテーブルを持っています。 program_location、hcp_data、guest_data、すべて適切な主キーを使用します。
hcp_dataの各行には、1つのプログラム位置に対する(外部キーによる)参照が含まれています。 guest_dataの各行には、hcp_dataの行への参照が含まれています。 1つのhcp_dataエントリに複数のゲストが接続されている可能性があります。これらのテーブルは、パーティの場所、招待者、招待者がそれぞれ同じ場所に持ち込むことを選択すると考えてください。こうして、彼らの関係を介して、私は彼らがリンクされているhcpの場所によってゲストの場所を知ることができます。
私がやろうとしているのは、hcp_dataテーブルとadditional_guestテーブルからすべての行を選択し、program_locationsテーブルからいくつかの列を各行に結合することです。基本的には、データを単一のフラットファイルとして扱うようにデータをダンプすることです。
は、ここで私が持っているものです。
SELECT lname, fname, degree, email, job_title, office_addr_line_1, office_addr_line_2, hcp_data.city, hcp_data.state, hcp_data.zip, phone, timestamp, program_location.restaurant_name, program_location.city AS restaurant_city, program_location.state AS restaurant_state
FROM hcp_data
LEFT JOIN program_location
ON hcp_data.program_location_idprogram_location = program_location.idprogram_location
UNION
SELECT lname, fname, degree, email, job_title, office_addr_line_1, office_addr_line_2, additional_guest.city, additional_guest.state, additional_guest.zip, phone, timestamp, program_location.restaurant_name, program_location.city AS restaurant_city, program_location.state AS restaurant_state
FROM additional_guest
LEFT JOIN program_location
ON
最後のONは、現時点では空白になっています。これが私が立ち往生している場所だと私は信じています。私は両サイドのコンポジットセレクトをする必要があると思いますが、私はよくわかりません。
助けてください!ありがとう!
編集、各テーブルの主キーは、単に "id"を先頭に付けたテーブル名、つまり "idprogram_location"です。 外部キーは元のテーブル、アンダースコア、列の名前です。彼らが来るテーブル:すなわち "program_location_idprogram_location"