私は2つのテーブルを持っています。以下を参照してください-プロファイルは私のメイン/マスターテーブルです
profiles invoices
____________ ___________________
|id Name | |profileid paid |
|============| |===================|
|1 Abraham | | 2 unpaid |
|2 Martin | | 3 unpaid |
|3 John | | 3 paid |
|____________| |___________________|
ご覧のとおり、abraham には 0 件の請求書があり、martin には 1 件の未払いの請求書があり、john には 2 件の請求書があります。1 有料、1 未払い。
検索したい:
- 請求書が支払われたすべてのプロファイル (john)
- 未払いの請求書があるすべてのプロファイル (ジョン & マーティン)
- 支払い済みと未払いの両方の請求書を持つすべてのプロファイル (ジョン)
1 と 2 は問題なく実行できますが、ステップ 3 に問題があります。
これが1のクエリです。
$query = "SELECT DISTINCT profiles.name
FROM profiles LEFT JOIN invoices ON (profiles.id=invoices.profileid)
AND (invoices.paid='paid' OR invoices.paid='unpaid')
WHERE
IFNULL(invoices.paid, '') LIKE 'paid';
これが2に対する私のクエリです。
$query = "SELECT DISTINCT profiles.name
FROM profiles LEFT JOIN invoices ON (profiles.id=invoices.profileid)
AND (invoices.paid='paid' OR invoices.paid='unpaid')
WHERE
IFNULL(invoices.paid, '') LIKE 'unpaid';
これが3に対する私のクエリです。
$query = "SELECT DISTINCT profiles.name
FROM profiles LEFT JOIN invoices ON (profiles.id=invoices.profileid)
AND (invoices.paid='paid' OR invoices.paid='unpaid')
WHERE
IFNULL(invoices.paid, '') LIKE 'paid'
AND IFNULL(invoices.paid, '') LIKE 'unpaid'
;
前述のように、1 と 2 は問題なく動作しますが、3 では 0 の結果が得られます。どんな助けでも大歓迎です。ありがとう