Rolf B: Query mysql

Beitrag lesen

Hallo Jörg,

ich verstehe das so, dass die KundenID in Tabelle 1 keine ID-Eigenschaft hat, d.h. es kann dort mehrere Rows mit dieser KundenID geben.

Du hast also als ersten Baustein

SELECT kundenid, info1, info2
FROM table1
WHERE /* bedingung */

und bekommst auf diese Weise ein Ergebnis, wo eine KundenID mehrfach vorkommt. Nun frag ich mich: was ist jetzt mit info1, info2, etc? Sind die in dem Fall auch gleich? Wenn nicht, wird es schwierig, denn damit wäre deine Anforderung nicht erfüllbar. Wenn sie aber gleich sind und die KundenID keine ID der Tabelle ist, dann schreit das nach einem Datenmodellfehler, denn dann gehörten info1 und info2 in die Kundentabelle, wo die KundenID eindeutig ist.

Hast Du also einen Datenmodellfehler? Oder verstund ich Dich nur miss?

Wenn es ein Datenmodellfehler ist, kannst Du dieses SELECT-Ergebnis mit DISTINCT auf eindeutige Werte eindampfen. Das ist nicht schön, weil es unnötig Aufwand in der DB macht, aber ich denke mal, eine Modellsanierung nicht nicht das, was Du jetzt vorhast.

SELECT filter1.kundenid, filter1.info1, filter1.info2, table2.info10, table2.info11
FROM (SELECT DISTINCT kundenid, info1, info2
      FROM table1
      WHERE /* bedingung */) filter1
  LEFT JOIN table2 ON filter1.kundenid = table2.kundenid

wäre mein Versuch, basierend auf den gemachten Annahmen.

Rolf

--
sumpsi - posui - obstruxi