Okee mensen, ik ben aan het knutselen aan de volgende query :
Hierbij heb ik het volgende probleem : In de SELECT query velden word met een IF statement aangegeven dat óf, zoals bijvoorbeeld in regel 6, pot_roi_paidhosts.PayingAmount moet worden weergegeven, óf er word 0 weergegeven.
Nou moet ik natuurlijk van pot_roi_paidhosts.PayingAmount (regel 6) maar één rij hebben, en niet allemaal. Daarom moet daar dus een WHERE op toegepast worden.
Maar die WHERE mag dus ook alleen toegepast worden ALS het bovenstaande IF-statement true, oftewel pot_roi_paidhosts.PayingAmount geeft!
Nou kan ik een IF-statement ook binnen een WHERE statement plaatsen, maar dan krijg je niet uiteindelijk 'WHERE pot_visitors.referer_id = pot_roi_paidhosts.referer_id' (regel 22), maar 'WHERE 1' of 'WHERE 0', aangezien 'pot_visitors.referer_id = pot_roi_paidhosts.referer_id' word ge-parsed tot een boolean. Oftewel, als er FALSE (= 0) uitkomt, dan levert mijn query in het geheel geen resultaat op. En da's niet de bedoeling! Wie weet hoe dit op te lossen?
Bedankt!
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| 1. INSERT INTO pot_roi_inout SELECT
2. 'NULL',
3. pot_visitors.referer_id,
4. pot_accesslog.document_id,
5. count(pot_accesslog.document_id),
6. IF((pot_visitors.referer_id IN ('SELECT pot_roi_paidhosts.referer_id FROM pot_roi_paidhosts')), pot_roi_paidhosts.PayingAmount, 0),
7. IF((pot_accesslog.document_id IN ('SELECT pot_roi_pageincome.document_id FROM pot_roi_pageincome')), pot_roi_pageincome.IncomePerVisit, 0),
8. IF((pot_visitors.referer_id IN ('SELECT pot_roi_paidhosts.referer_id FROM pot_roi_paidhosts')), pot_roi_paidhosts.PayPerClick, 1),
9. IF((pot_visitors.referer_id IN ('SELECT pot_roi_paidhosts.referer_id FROM pot_roi_paidhosts')), pot_roi_paidhosts.DaysPerPayPeriod, 1)
10. FROM
11. pot_visitors,
12. pot_accesslog,
13. pot_roi_paidhosts,
14. pot_roi_pageincome
15. WHERE
16. pot_visitors.accesslog_id = pot_accesslog.accesslog_id
17. AND
18. pot_accesslog.timestamp > ". $TimePeriodStart ."
19. AND
20. pot_accesslog.timestamp < ". $TimePeriodEnd ."
21. AND
22. IF((pot_visitors.referer_id IN ('SELECT pot_roi_paidhosts.referer_id FROM pot_roi_paidhosts')), pot_visitors.referer_id = pot_roi_paidhosts.referer_id, 1 = 1)
23. AND
24. IF((pot_accesslog.document_id IN ('SELECT pot_roi_pageincome.document_id FROM pot_roi_pageincome')), pot_accesslog.document_id = pot_roi_pageincome.document_id, 1 = 1)
25. GROUP BY
26. pot_visitors.referer_id,
27. pot_accesslog.document_id |
Hierbij heb ik het volgende probleem : In de SELECT query velden word met een IF statement aangegeven dat óf, zoals bijvoorbeeld in regel 6, pot_roi_paidhosts.PayingAmount moet worden weergegeven, óf er word 0 weergegeven.
Nou moet ik natuurlijk van pot_roi_paidhosts.PayingAmount (regel 6) maar één rij hebben, en niet allemaal. Daarom moet daar dus een WHERE op toegepast worden.
Maar die WHERE mag dus ook alleen toegepast worden ALS het bovenstaande IF-statement true, oftewel pot_roi_paidhosts.PayingAmount geeft!
Nou kan ik een IF-statement ook binnen een WHERE statement plaatsen, maar dan krijg je niet uiteindelijk 'WHERE pot_visitors.referer_id = pot_roi_paidhosts.referer_id' (regel 22), maar 'WHERE 1' of 'WHERE 0', aangezien 'pot_visitors.referer_id = pot_roi_paidhosts.referer_id' word ge-parsed tot een boolean. Oftewel, als er FALSE (= 0) uitkomt, dan levert mijn query in het geheel geen resultaat op. En da's niet de bedoeling! Wie weet hoe dit op te lossen?
Bedankt!
Genoeg is meer dan veel, en tart den overvloed