これが私が必要なものを説明するための例です:
私は3つのテーブルを持っています:
contact: { id, invoices, name } // a contact can have several invoices
invoice: { id, contact, lines, comment } // an invoice can have several lines but only one contact
line: { id, invoice, designation } // a line can have only one invoice
ユーザーが請求書を検索する場合、コメント、指定、名前の各フィールドにクエリを実行し、一致する請求書のみを取得します。
だから私はこれをしました:
SELECT
invoice.id AS id,
invoice.contact AS contact,
invoice.comment AS comment,
FROM invoice
LEFT JOIN contact ON invoice.contact = contact.id
LEFT JOIN line ON line.invoice = invoice.id
WHERE (
contact.name LIKE '%SEARCH_TERM%' OR
invoice.comment LIKE '%SEARCH_TERM%' OR
line.designation LIKE '%SEARCH_TERM%'
)
これは、請求書に検索語と一致する行が複数ある場合、同じ請求書を数回取得することを除いて機能します。
だから私の質問は:検索語がいくつかの関連するレコードで見つかったとしても、請求書を一度だけ取得する方法はありますか?
また、ALIASを使用せずに請求書のフィールドのみを取得する方法はありますか(検索以外のテーブルの連絡先と行は気にしません)?
あなたがそれをするより良い方法を知っているなら、私はそれを聞いてみたいです。