頭を悩ませているSQLの問題があります。次のデータを含む次の 2 つのテーブルを検討してください。
企業:
| id | name |
| 1 |Fake Company|
company_addresses:
| id | company_id | name | address1 | address2 | town | postcode | main
| 1 | 1 | Head Office| Building 2 | RandStreet | London | L1 2FN | t
| 2 | 1 | MAIN | Building 14 | RandRoad | London | L1 6RR | f
会社とその主な住所を取得したい。メイン アドレスはmain
、表の列が true であることによって示されcompany_addresses
ます。ただし、データが多少乱雑で、いくつかのアドレスが呼び出されているだけMAIN
です。住所がまったくない会社もあります。
では、最初に としてマークされている住所を選択して、会社とその住所を取得するにはMAIN
どうすれMAIN
ばよいですか? 現時点で持っているのは次のとおりです。
SELECT * FROM companies c
JOIN company_addresses ca ON ca.company_id = c.id
WHERE c.name = 'Fake Company'
AND ca.main IS TRUE
しかし、明らかに、私が望む優先リストを使用するのではなく、住所がメインとしてマークされている会社のみが返されます。