Ich habe meinen tatsächlichen Live-Code vereinfacht, da ich diesen Beitrag mit irrelevanten Daten nicht überlaufen möchte.Links Joins auf mehreren Tabellen, wo einer von ihnen Master sein kann
Ich habe (leider) sieben Tabellen, eine für jeden Wochentag, die genau die gleichen Informationen enthält, mit Ausnahme von zwei Artikeln und das ist der Titel der Zeitung und die Menge an Zeitungen, die der Kunde erhalten sollte. Jetzt kann jeder Kunde eine beliebige Anzahl von Zeitungen haben (von einem einzigen Titel bis hin zu 20 verschiedenen Titeln) und sie können jeden Tag eine beliebige Anzahl von Zeitungen mit diesem Titel haben (0 zu riesigen Mengen) - ABER! und hier kommt der Kicker - sie können die Menge von 0 an jedem gegebenen Tag haben. Was ich am Ende brauche, ist dies:
Customer1, New York Times, 0, 7, 3, 2, 2, 10, 10
was darauf hindeuten würde, dass Customer1 7 in New York TIEMS am Dienstag will (ja, ich bin aus Schweden, wird die Woche mit Montag beginnen), 10 am Samstag und 10 am Sonntag e.tc. Nun meine 7 verschiedene Tabellen habe ich nun keine Informationen überhaupt enthalten, wenn der Kunde an diesem bestimmten Tag keine Papiere haben nicht, was bedeutet, dass ich das nicht tun kann:
select t1.name, t1.title, t1.amount, t2.amount,
t3.amount, t4.amount, t5.amount, t6.amount,
t7.amount
from table_mon t1
left join table_tue t2 on t2.name = t1.name
left join table_wen t3 on t3.name = t1.name
left join table_thu t4 on t4.name = t1.name
left join table_fri t5 on t5.name = t1.name
left join table_sat t6 on t6.name = t1.name
left join table_sun t7 on t7.name = t1.name
seit Montag der Tag sein könnte dass dieser Kunde kein Papier hat und somit nicht zum montag gehört. Theoretisch kann er nur in einem der Tische sein und ich habe keine Ahnung welche.
Wie kann ich eine Verknüpfung schreiben, wo ich nicht weiß, welche die "Master" -Tabelle ist?
Dies scheint eine schlechtes Datenbankdesign Ist es zu spät, um zu ändern? –
Sollte der Join nicht auch die Titelspalte enthalten? –