1
我需要選擇具有現金付款和相同日期的交易,但僅限於只有一筆付款的交易 (因此,結果集中應省略num14) 所以正確的結果只有12和13。從第二個表中的count = 1和另外兩個條件的一個表中選擇
Table2 Table1
num | date | data | total num | payment | date
12 xy abc 2.5 12 cash xy
13 xy cbc 2.1 13 cash xy
14 xy acc 2.3 14 visa xy
19 xy def 2.0 14 cash xy
27 xy fgh 1.3 19 visa xy
27 mc xy
像這樣的東西給結果集中的第14號,但應該省略14。
SELECT num, data
FROM Table2
WHERE num IN
(
SELECT num FROM `Table1`
WHERE payment = 'cash'
GROUP BY `num`
HAVING (COUNT(`num`) = 1 )
)
要sumarize正確答案(由tombom):
SELECT t2.num, t2.data
FROM Table1 as t1
INNER JOIN Table2 as t2 ON t1.num = t2.num
AND t1.date = 'xy'
GROUP BY t1.num
HAVING GROUP_CONCAT(t1.payment) = 'cash'
謝謝!
以某種方式與您的選擇我仍然得到兩行的結果。在這種情況下,我仍然得到第14名。是不是因爲付款:'現金'已經在沒有任何其他付款的結果? – phpJs
@phpJames編輯我的答案,嘗試更新後的查詢。 – fancyPants
我仍然收到兩筆付款的行 - 從WHERE更改爲AND後。 爲了簡化我們現在可以省略日期 – phpJs