AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Frage/Probleme bei SELECT über zwei Tabellen

Frage/Probleme bei SELECT über zwei Tabellen

Ein Thema von CG2003 · begonnen am 23. Feb 2006 · letzter Beitrag vom 24. Feb 2006
Antwort Antwort
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#1

Frage/Probleme bei SELECT über zwei Tabellen

  Alt 23. Feb 2006, 22:02
Datenbank: MySQL • Version: 4.1 • Zugriff über: Zeos
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:
SELECT PartNr, COUNT(*) FROM Buchungen WHERE PartDatum BETWEEN '10.01.2005AND '20.01.2005AND PartStatus = 'Abbuchung';
GROUP BY PartNr;
ORDER BY PartNr;
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:

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!
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.416 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Probleme bei SELCT von zwei Tabellen

  Alt 23. Feb 2006, 22:15
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.2005AND '20.01.2005AND PartStatus = 'Abbuchung'
LEFT OUTER JOIN Artikel on Artikel.PartNr = Buchungen.PartNr
GROUP BY PartNr, Bezeichnung
ORDER BY PartNr
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Frage/Probleme bei SELECT über zwei Tabellen

  Alt 23. Feb 2006, 22:32
Hallo,

vielen Dank für die schnelle Antwort.

Ich habe folgendes bei phpmyadmin eingegeben:

SQL-Code:
SELECT Buchungen.PartNr, Parts.PartBezeichnung, COUNT(*) FROM Buchungen WHERE PartDatum BETWEEN '26.09.2005AND '30.09.2005AND PartStatus = 'Abbuchung';
LEFT OUTER JOIN Parts on Parts.PartNr = Buchungen.PartNr;
GROUP BY PartNr, Bezeichnung;
ORDER BY PartNr;
Wobei "Buchungen" meine Buchungstabelle ist, und "Parts" meine Artikeltabelle.
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:
SELECT Buchungen.PartNr, Parts.PartBezeichnung, COUNT(*) FROM Buchungen WHERE PartDatum BETWEEN '26.09.2005AND '30.09.2005AND PartStatus = 'Abbuchung'
LEFT OUTER JOIN Parts on Parts.PartNr = Buchungen.PartNr
GROUP BY PartNr, Bezeichnung
ORDER BY PartNr
(also ohne Dezimalkommas), erhalte ich einen Syntaxfehler.
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.416 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Frage/Probleme bei SELECT über zwei Tabellen

  Alt 23. Feb 2006, 22:38
Schau mal unter http://dev.mysql.com/doc/refman/5.0/en/join.html nach.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Frage/Probleme bei SELECT über zwei Tabellen

  Alt 23. Feb 2006, 22:47
Zitat von Union:
Danke, ich habe es mir angesehen, aber irgendwie steige ich da leider nicht durch...
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Frage/Probleme bei SELECT über zwei Tabellen

  Alt 23. Feb 2006, 23:34
SQL-Code:
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.2005AND '30.09.2005AND PartStatus = 'Abbuchung'
ORDER BY Buchungen.PartNr
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.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Frank Borland

Registriert seit: 12. Feb 2006
Ort: Hamburg
55 Beiträge
 
Delphi 2006 Enterprise
 
#7

Re: Frage/Probleme bei SELECT über zwei Tabellen

  Alt 24. Feb 2006, 06:10
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


SQL-Code:
SELECT B.PartNr, P.PartBezeichnung, COUNT(*) FROM Buchungen B, Parts P
WHERE
B.PartDatum BETWEEN '26.09.2005AND '30.09.2005
AND
B.PartStatus = 'Abbuchung'
and
P.PartNr = B.PartNr
GROUP BY B.PartNr, P.PartBezeichnung
ORDER BY B.PartNr
Wirklich Sorgen sollte Dir eigentlich die Datumabfrage machen. Hier würde ich immer Parameter verwenden um den lokalen Einstellungen zu entgehen.

Gruß


Malte
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Frage/Probleme bei SELECT über zwei Tabellen

  Alt 24. Feb 2006, 07:26
Zitat von Frank Borland:
Wirklich Sorgen sollte Dir eigentlich die Datumabfrage machen. Hier würde ich immer Parameter verwenden um den lokalen Einstellungen zu entgehen.
Immer problemlos bei MySQL ist die Darstellung im yyyymmdd Format,
also:
...WHERE PartDatum BETWEEN '20050926AND '20050930AND...
  Mit Zitat antworten Zitat
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Frage/Probleme bei SELECT über zwei Tabellen

  Alt 24. Feb 2006, 08:19
Zitat von Frank Borland:
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


SQL-Code:
SELECT B.PartNr, P.PartBezeichnung, COUNT(*) FROM Buchungen B, Parts P
WHERE
B.PartDatum BETWEEN '26.09.2005AND '30.09.2005
AND
B.PartStatus = 'Abbuchung'
and
P.PartNr = B.PartNr
GROUP BY B.PartNr, P.PartBezeichnung
ORDER BY B.PartNr
Wirklich Sorgen sollte Dir eigentlich die Datumabfrage machen. Hier würde ich immer Parameter verwenden um den lokalen Einstellungen zu entgehen.

Gruß


Malte
Danke, das scheint zu funktionieren. Die Datumsangaben werde ich dann über Parameter machen, wenn ihr meint es ist besser so. Muss ich da noch zusätzlöich was beachten?
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
Frank Borland

Registriert seit: 12. Feb 2006
Ort: Hamburg
55 Beiträge
 
Delphi 2006 Enterprise
 
#10

Re: Frage/Probleme bei SELECT über zwei Tabellen

  Alt 24. Feb 2006, 08:29
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

Gruß


Malte
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf