Hallo,
ich bastele und probiere an einer MySQL-Abfrage nun 2 Tage rum und komme zu keinen zufriedenstellenden Ergebnis.
Struktur:
[quote]
mysql> SELECT * FROM partners;
+----+--------------------+-------------+-----------------+----------------------------------+-------+------+
| id | domain | pw | email | session | klick | view |
+----+--------------------+-------------+-----------------+----------------------------------+-------+------+
| 1 | domain.de | domain | info@domain.de | NULL | 1 | 1 |
| 2 | domain2.de | domain2 | info@domain2.de | b1c1f05c320f508d10053058c3497b83 | 1 | 1 |
+----+--------------------+-------------+-----------------+----------------------------------+-------+------+
mysql> SELECT * FROM p_rechnung;
+----+------------+--------+--------+------------+----------------------------------+-----+
| id | partner_id | anzahl | status | zeit | link | typ |
+----+------------+--------+--------+------------+----------------------------------+-----+
| 1 | 1 | 1000 | 1 | 1108685695 | domain-200701-1000klick | 0 |
| 4 | 2 | 100000 | 1 | 1169138570 | domain2-200701-10000 | 1 |
| 5 | 2 | 50 | 1 | 1169564199 | domain2-200701-50klick | 0 |
| 6 | 2 | 200000 | 1 | 1169813082 | domain2-200701-200000view | 1 |
+----+------------+--------+--------+------------+----------------------------------+-----+
mysql> SELECT * FROM p_view;
+----+------------+-------+------+--------+
| id | partner_id | monat | jahr | views |
+----+------------+-------+------+--------+
| 4 | 2 | 1 | 2007 | 268743 |
| 5 | 2 | 2 | 2007 | 277775 |
+----+------------+-------+------+--------+
[/quote]
Meine derzeitige Abfrage:
SELECT p.id, p.domain, r.link, COUNT( r.anzahl ), SUM(COALESCE(v.views)), SUM( r.anzahl )
FROM partners p
INNER JOIN p_rechnung r ON p.id=r.partner_id
INNER JOIN p_view v ON p.id=v.partner_id
WHERE r.status = '1'
AND r.typ = '1'
GROUP BY p.id
HAVING SUM( r.anzahl ) > SUM(COALESCE(v.views))/COUNT( r.anzahl )
ORDER BY RAND()
LIMIT 1
Was ich möchte:
Eine Zufalls-ID bei der die Rechnungen bezahlt wurden.
In p_rechnung werden Rechnungen gespeichert, mit ANzahl der freien Klicks bzw. Bannerimpressionen. r.tatus 1 entspricht bezahlt und kann eingeblendet werden. r.typ 1 bedeutet dass Bannereinblendungen also keine Bannerklicks bezahlt wurden.
Ist bisschen verwirrend aber sollte gehen.
Das Problem ist halt, dass COUNT( r.anzahl ) die Anzahl aller Rechnungen ausgibt und nicht eines bestimmten Partners. GEnau so ist es bei den SUM().
SOlltet ihr Verständnisfragen haben, könnt ihr diese gerne Stellen.