Ben kesinlikle PHP ile sonuçları yineleme bunu, ama birisi daha iyi bir çözüm sonrası bir saniye olsaydı sadece bilmek istedim edebilirsiniz.
Senaryo Ben işlemlerin bir listesi var olmasıdır. Ben iki tarih seçin ve bu iki tarih arasındaki işlemleri almak için bir rapor çalıştırın ... kolay. Olsa raporlama bölümlerden biri için, ben onların ilk işlem ise sadece işlem dönmek gerekiyor.
Ben sorgu ile nerede var burada:
SELECT *, MIN(bb_transactions.trans_tran_date) AS temp_first_time
FROM
bb_business
RIGHT JOIN bb_transactions ON bb_transactions.trans_store_id = bb_business.store_id
LEFT JOIN bb_member ON bb_member.member_id = bb_transactions.trans_member_id
WHERE
bb_transactions.trans_tran_date BETWEEN '2010-08-01' AND '2010-09-13'
AND bb_business.id = '5651'
GROUP BY bb_member.member_id
ORDER BY bb_member.member_id DESC
Bu bana MIN
seçilen tarihler arasındaki işlemlerin verir. Ne gerçekten ihtiyacınız olan genel MIN
bu iki tarih arasında düşerse. Bu mantıklı mı?
Ben temelde bir müşteri raporlama döneminde ilk defa satın olmadığını bilmek gerekir.
Her neyse, ben PHP ile çözmek gibi hiçbir büyük acele. Çoğunlukla kendi merak ve öğrenme için.
Bilgiyi yaymak için teşekkürler!
EDIT:
I had to edit the query because I had left one of my trial-errors in there. I had also tried to use the temporary column created from MIN
as the selector between the two dates. That returned an error.
SOLUTION: Here is the revised query after help from you guys:
SELECT * FROM (
SELECT
bb_member.member_id,
MIN(bb_transactions.trans_tran_date) AS first_time
FROM
bb_business
RIGHT JOIN bb_transactions ON bb_transactions.trans_store_id = bb_business.store_id
LEFT JOIN bb_member ON bb_member.member_id = bb_transactions.trans_member_id
WHERE bb_business.id = '5651'
GROUP BY bb_member.member_id
) AS T
WHERE T.first_time BETWEEN '2010-08-01' AND '2010-09-13'