Mehrfachabrage

Mehrfachabrage

am 08.01.2007 12:59:48 von Mathias

Hallo,

ich habe eine mysql Tabelle mit den Feldern
tempID,username,product,CLeads,CQLeads,userID
(mysql5)
Es werden hier Abfrageregebnisse aus anderen Abfragen eingelesen. In den
Feldern CLeads,CQLeads stehen Zahlen (INT). User mit gleichem Usernamen
erhalten die gleiche userID. Es ist unterschiedliche Schreibweise des
Namens möglich, deshalb noch die userID. Es kann also logischweise
vorkommen, das ein Username in dieser Tabelle mehrfach vorkommt. Wenn ich
diese nun auslese sortiere ich nach dem Feld userID. Soweit so gut. Nun
sollen aber die User noch nach den Werten in dem FeldCLeads sortiert
werden. Was ja eigentlich auch kein Problem darstellt. Aber ich möchte
nicht nach den Einzelwerten in CLeads sortieren sondern nach der Summe für
alle User mit der jeweils gleichen userID, dann nach den einzelenn Werten
in CLeads, dann nach der userID.

Dir Abfrage aus folgender Tabelle

tempID | username | product | CLeads | CQLeads | userID
1 |test1 | Milch | 20 | 17 | 1
2 |test2 | Kaffee | 18 | 12 | 2
3 |Test1 | Tee | 12 | 9 | 1
4 |test3 | Milch | 30 | 27 | 3


sollte also sortiert so aussehen:

tempID | username | product | CLeads | CQLeads | userID
1 |test1 | Milch | 20 | 17 | 1
3 |Test1 | Tee | 12 | 9 | 1
4 |test3 | Milch | 30 | 27 | 3
2 |test2 | Kaffee | 18 | 12 | 2

test1 kommt zuerst, weil die Summe aus dem Feld CLeads bei ihm am größten
ist. test1 kommt vor Test1 weil der Einzelwert in CLeads bei test1 größer
ist. Dann kommt erst test3. Sein Einzelwert in CLeads ist zwar höher, aber
in Summe hat test1 mehr. Wie bekomme ich das hin?
Ich hoffe, ich konnt mich verständlich ausdrücken.

mfg

Mathias

Re: Mehrfachabrage

am 08.01.2007 17:57:24 von Jens Jacobsen

Hi,

Mathias schrieb:
> Aber ich möchte
> nicht nach den Einzelwerten in CLeads sortieren sondern nach der Summe für
> alle User mit der jeweils gleichen userID, dann nach den einzelenn Werten
> in CLeads, dann nach der userID.

probiers doch mal damit:

SELECT *,(SELECT SUM(CLeads) FROM testtable WHERE userID=T.userID) as
CLeadsSum FROM testtable T ORDER BY CLeadsSum DESC, CLeads DESC

Grüsse
Jens

Re: Mehrfachabrage

am 11.01.2007 16:32:12 von Mathias

Am Mon, 08 Jan 2007 17:57:24 +0100 schrieb Jens Jacobsen:

> Hi,
>
> Mathias schrieb:
>> Aber ich möchte
>> nicht nach den Einzelwerten in CLeads sortieren sondern nach der Summe für
>> alle User mit der jeweils gleichen userID, dann nach den einzelenn Werten
>> in CLeads, dann nach der userID.
>
> probiers doch mal damit:
>
> SELECT *,(SELECT SUM(CLeads) FROM testtable WHERE userID=T.userID) as
> CLeadsSum FROM testtable T ORDER BY CLeadsSum DESC, CLeads DESC
>
> Grüsse
> Jens

Danke, werd ich mal testen

Mathias