Rolf B: Query mysql

Beitrag lesen

Hallo Jörg,

Passt die Query noch?

Ich glaube nicht. Ich glaube auch nicht, dass Du mit nur einer Query dein Ziel erreichen kannst. Die Mitarbeiterliste ist von info1 und info2 unabhängig, warum sollen die Mitarbeiter im gleichen Resultset wie info1 und info2 geliefert werden?

Vor allem - was ist, wenn Du aus Tabelle 1 vier mal die KundenID 4711 bekommst und unterschiedliche Werte für info1 und info2?

SELECT kundenid, info1, info2
FROM table1
WHERE /* bedingung */
4711    A    X
4711    A    X
4711    A    Y
4711    B    Y

Info1 könnte die Adresse sein und Info2 die Telefonnummer, d.h. im Verlauf der Zeit hat sich erst die Telefonnummer geändert und dann die Adresse.

Jetzt willst Du die Mitarbeiter beim Kunden 4711 ergänzen. Nehmen wir an, das sind 4 Stück - aber welcher Row willst Du die zuordnen? Ein DISTINCT über kundenid, info1, info2 liefert immer noch 3 Rows, und ein Join hätte damit 12 Zeilen. Ein DISTINCT nur über die Kundenid würde eine Row aus Tabelle 1 liefern und nach dem Join hätten wir dann 4 - aber Du verlierst info1 und info2.

Dazwischen gibt es nichts.

Wenn Du alle Stände von info1 und info2 brauchst, dann musst Du das zuerst und unabhängig von den Mitarbeitern tun. In einer zweiten Query lässt Du info1 und info2 weg, machst den DISTINCT auf die Kundennummer und tust das, was ich im vorigen Post vorschlug.

Wenn Du von info1 und info2 nur den neuesten Stand brauchst, könnte man mit GROUP BY hantieren. Aber auch dann frage ich nach dem Sinn eines JOIN mit den Mitarbeitern - in diesem Abfrageergebnis wären info1 und info2 immer noch redundant drin.

Wie ist das mit der Abfrage auf table1? Liefert die Bedingung immer nur eine Kunden-ID? Oder mehrere? Abhängig davon könnte ein ORDER BY mit LIMIT reichen, oder es wird kompliziert. Welche DB und welche Version davon setzt Du ganz genau ein? Weiß ich nicht mehr.

Rolf

--
sumpsi - posui - obstruxi