![]() |
Datenbank: MySQL • Version: 4.1 • Zugriff über: Zeos
Frage/Probleme bei SELECT über zwei Tabellen
Hallo liebe DP,
ich habe mal wieder ein großes Problem. Ich mache folgende SELECT-Abfrage aus einer Verbrauchs-Tabelle, in der Ersatzteil-Buchungen protokolliert werden, zur Verbrauchsberechnung:
SQL-Code:
Das funktioniert soweit ganz gut (ich lasse mir den Inhalt von "PartNr" in einem ListView anzeigen, und den Inhalt von "COUNT(*)" als SubItem dahinter. Das ganze sieht dann (ein Beispiel-Eintrag ca. so aus:
SELECT PartNr, COUNT(*) FROM Buchungen WHERE PartDatum BETWEEN '10.01.2005' AND '20.01.2005' AND PartStatus = 'Abbuchung';
GROUP BY PartNr; ORDER BY PartNr; 101556445 | 22 In meiner Artikelstamm-Tabell sind die Einträge wie folgt gespeichert: Artikelnummer | Bezeichnung | Hersteller | Typ | Bestand So, nun möchte ich allerdings das zu der o.g. Part-Nr., die Artikelbezeichnung aus meiner Artikelstamm-Tabelle mit in diesem ListView zu der zugehörigen Part-Nr. angezeigt wird. Also bspw. so: 101556445 | Schraube, flach | 22 Wie geht das, das man zwei Tabellen in dieser Art "verbindet"? Ich hoffe Ihr habt ungefährt verstanden, was ich meine und worauf ich hinaus will. Vielen lieben Dank schon mal im Voraus! |
Re: Probleme bei SELCT von zwei Tabellen
Das ist dann zwar nicht mehr schnell, aber es geht (ich habe hier ein GROUP BY 1..16 :()
SQL-Code:
SELECT Buchungen.PartNr, Artikel.Bezeichnung, COUNT(*) FROM Buchungen WHERE PartDatum BETWEEN '10.01.2005' AND '20.01.2005' AND PartStatus = 'Abbuchung'
LEFT OUTER JOIN Artikel on Artikel.PartNr = Buchungen.PartNr GROUP BY PartNr, Bezeichnung ORDER BY PartNr |
Re: Frage/Probleme bei SELECT über zwei Tabellen
Hallo,
vielen Dank für die schnelle Antwort. Ich habe folgendes bei phpmyadmin eingegeben:
SQL-Code:
Wobei "Buchungen" meine Buchungstabelle ist, und "Parts" meine Artikeltabelle.
SELECT Buchungen.PartNr, Parts.PartBezeichnung, COUNT(*) FROM Buchungen WHERE PartDatum BETWEEN '26.09.2005' AND '30.09.2005' AND PartStatus = 'Abbuchung';
LEFT OUTER JOIN Parts on Parts.PartNr = Buchungen.PartNr; GROUP BY PartNr, Bezeichnung; ORDER BY PartNr; Nun, damit erhalte ich folgende Fehlermeldung: "#1109 - Unknown table 'Parts' in field list ". Habe ich was falsch gemacht???!!! Wenn ich alles so eintrage:
SQL-Code:
(also ohne Dezimalkommas), erhalte ich einen Syntaxfehler.
SELECT Buchungen.PartNr, Parts.PartBezeichnung, COUNT(*) FROM Buchungen WHERE PartDatum BETWEEN '26.09.2005' AND '30.09.2005' AND PartStatus = 'Abbuchung'
LEFT OUTER JOIN Parts on Parts.PartNr = Buchungen.PartNr GROUP BY PartNr, Bezeichnung ORDER BY PartNr |
Re: Frage/Probleme bei SELECT über zwei Tabellen
Schau mal unter
![]() |
Re: Frage/Probleme bei SELECT über zwei Tabellen
Zitat:
|
Re: Frage/Probleme bei SELECT über zwei Tabellen
SQL-Code:
Ich kenn mich bei mysql nicht so aus, aber probier das mal. Wenn ich beim SQL Server was groupiere brauche ich eigentlich alle Spalten vom Select auch in der group by klausel. Einschränken würde dann mit Having gehen, wenn ich mich recht erinner. Kann das grad nicht testen.
SELECT Buchungen.PartNr, Parts.PartBezeichnung, COUNT(*) FROM Buchungen
LEFT OUTER JOIN Parts on Parts.PartNr = Buchungen.PartNr GROUP BY Buchungen.PartNr, Parts.PartBezeichnung HAVING PartDatum BETWEEN '26.09.2005' AND '30.09.2005' AND PartStatus = 'Abbuchung' ORDER BY Buchungen.PartNr |
Re: Frage/Probleme bei SELECT über zwei Tabellen
Moin, moin,
irgendwer kann keine ANSI- SQL- konformes Statement auflösen. Entweder Zeos, eher aber MySQL: "The { OJ ... LEFT OUTER JOIN ...} syntax shown in the preceding list exists only for compatibility with ODBC". Naja, der Jim Starkey von Interbase ist ja unterwegs um aus dem Ding eine ordentliche DB zu machen :lol:
SQL-Code:
Wirklich Sorgen sollte Dir eigentlich die Datumabfrage machen. Hier würde ich immer Parameter verwenden um den lokalen Einstellungen zu entgehen.
SELECT B.PartNr, P.PartBezeichnung, COUNT(*) FROM Buchungen B, Parts P
WHERE B.PartDatum BETWEEN '26.09.2005' AND '30.09.2005' AND B.PartStatus = 'Abbuchung' and P.PartNr = B.PartNr GROUP BY B.PartNr, P.PartBezeichnung ORDER BY B.PartNr Gruß Malte |
Re: Frage/Probleme bei SELECT über zwei Tabellen
Zitat:
also:
SQL-Code:
...WHERE PartDatum BETWEEN '20050926' AND '20050930' AND...
|
Re: Frage/Probleme bei SELECT über zwei Tabellen
Zitat:
|
Re: Frage/Probleme bei SELECT über zwei Tabellen
Zweckmäßigerweise solltest Du alle Abfragen in einer SQL- Console / Abfragetool testen. Dabei kannst Du auch gleich den Indexplan überprüfen, den die DB anbietet und ggf. die DB oder die Abfrage anpassen. Ganz nebenbei sparst Du Dir den Weg durch Dein Programm bis die Abfrage steht :zwinker:
Gruß Malte |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:05 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