![]() |
Datenbank: MySQL • Version: 5 • Zugriff über: DAC for MySQL
SQL Abfrage über mehrere Tabellen
Hallo,
ich komme bei einer SQL Abfrage nicht weiter. 3 Tabellen (stark vereinfacht) habe ich gegeben: Kunde id Name Kunde_zeit id - zeigt auf Table Kunde.ID Nr -zeigt auf Table Wochentag.Nr Zeit Wochentag Nr Tag Das Ergebnis sollte eigentlich nur einen Satz pro Kunden enthalten. Genau da komme ich nicht weiter. Bsp. Name----Wochentag-----Zeit-----Wochentag-----Zeit Kunde1--Montag-------10:20-----Dienstag-----14:18 Kunde2--Mittwoch-----14:20-----Freitag------07:00 Ich habe es nur geschafft, das für jede Zeitangabe eines Kunden jeweils ein einzelner Satz heraus kommt. Danke für jede Idee. |
Re: SQL Abfrage über mehrere Tabellen
Zitat:
mal wieder der Standardkommentar: Meine Glaskugel ist kaputt. Wie sieht denn die SQL-Abfrage aus?! Der Fehler dürfte im JOIN-Abschnitt liegen. Jürgen |
Re: SQL Abfrage über mehrere Tabellen
Zitat:
Aber meine Abfrage passt nicht zu dem simplifizierten Beispiel. Seis drum. Ich bastle aus meinem vorhandenen Select mal ein Beispiel was zur Vorgabe passt. //Edit : vereinfacht würde es dann so aussehen:
SQL-Code:
SELECT
`Kunde`.`ID`, `Kunde`.`Name`, `Wochentag`.`Tag`, `Kunde_zeit`.`Zeit` FROM `kunde` Right Join `Kunde_zeit` ON `Kunde`.`Id` = `Kunde_zeit`.`Id` Left Join `Wochentag` ON `Kunde_zeit`.`Nr` = `Wochentag`.`Nr` ORDER BY `Kunde`.`ID` |
Re: SQL Abfrage über mehrere Tabellen
Irgendwie passt dein Datenmodell nicht so ganz zur Aufgabenstellung (die hier leider unbekannt ist).
Handelt es sich um Besuchstermine / Arzttermine oder so ähnlich? Bei deinem Modell können zu einem Kunden beliebig viele Zeitpunkte (Wochentag +Uhrzeit) gespeichert werden. Die Beziehung ist 1 Kunde -> 0..N Zeitpunkte Du möchstest jetzt aber eine Tabelle, die pro Kunde 2 dieser Angaben enthält. Das lässt sich aber mit SQL so nicht lösen. Die Tabelle "Kunde_zeit" müsste schon eine Information tragen, ob die Zeitinfo zum 1. oder zum 2. Zeitpunkt gehört.
Code:
Name----Wochentag1-----Zeit1-----Wochentag2-----Zeit2
|
Re: SQL Abfrage über mehrere Tabellen
Zitat:
Zitat:
Zitat:
Zitat:
Von daher der Versuch es mit SQL zu lösen. Aber danke für deine Antwort. |
Re: SQL Abfrage über mehrere Tabellen
Wiviele Termine pro Kunde sind möglich?
|
Re: SQL Abfrage über mehrere Tabellen
Zitat:
|
Re: SQL Abfrage über mehrere Tabellen
Eine sehr Aufwende Möglichkeit wäre über Joins mit verschiedenen Limits.
|
Re: SQL Abfrage über mehrere Tabellen
Zitat:
Mein Problem ist ja im Kern auch die Performance. Das Aufbereiten für die Ansicht habe ich ja durch manuelle Abarbeitung im Griff. Die Abfrage (bei ca. 2000 Kunden*7 mögliche Termine= 14000 Tupel) bremst MySQL enorm aus. Deswegen der Versuch die Abfrage zu beschleunigen. Ich war in ursprünglich der Meinung ich könnte es durch einen Thread im Hintergrund ablaufen lassen, so dass der Anwender erstmal berühigt andere Dinge erledigen kann. Leider geht das nicht. Wenn der DB-Server die Arbeit aufgenommen hat steht alles bis er fertig ist. |
Re: SQL Abfrage über mehrere Tabellen
Hallo Memo,
vielleicht so...
SQL-Code:
Gruss
SELECT k.id,
k.name, TRIM(GROUP_CONCAT(' ', CONCAT(w.tag, ' ', kz.zeit))) termin FROM kunde k LEFT JOIN kunde_zeit kz ON k.id = kz.id LEFT JOIN wochentag w ON kz.nr = w.nr GROUP BY k.id, k.name ORDER BY k.name Thorsten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz