Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Ausgabe der Daten 2er Tabellen statt einer (https://www.delphipraxis.net/138735-ausgabe-der-daten-2er-tabellen-statt-einer.html)

youuu 16. Aug 2009 17:24

Datenbank: MySQL • Zugriff über: Devarts

Ausgabe der Daten 2er Tabellen statt einer
 
Hi,

Momentan löse ich es so:

Delphi-Quellcode:
QueryRead.SQL.Text:='SELECT * FROM `'contacts+'` WHERE Customer_number = '''+customer_number+'''';
QueryRead.Open;

position:= FormMain.QueryRead.FieldByName('position').AsWideString;

QueryRead.Close;
Wie kann ich es realisieren wenn ich aber die Werte von 2 Tabellen haben möchte statt nur einer?

also z.B.
Delphi-Quellcode:
QueryRead.SQL.Text:='SELECT * FROM `'contacts+'`   [b] And `'contacts2'[/b]`           WHERE Customer_number = '''+customer_number+'''';
QueryRead.Open;

position:= FormMain.QueryRead.FieldByName('position').AsWideString; (Tabelle1)
position:= FormMain.QueryRead.FieldByName('position').AsWideString; (Tabelle2)

QueryRead.Close;
Oder muss ich das seperat ausführen?

Jürgen Thomas 16. Aug 2009 17:31

Re: Ausgabe der Daten 2er Tabellen statt einer
 
Mit UNION können zwei SELECT-Ergebnisse in eines zusammengefasst und "am Stück" zurückgegeben werden.

Übrigens ist dein Verfahren, einen SQL-Text per String-Verknüpfung zu erstellen, ziemlich miserabel. Du hast schon Probleme mit den Hochkommata; wie soll das erst bei Zahlen und Datumsformaten werden - ganz abgesehen von SQL-Injection. Dafür sind unbedingt Parameter zu verwenden.

Gruß Jürgen

mkinzler 16. Aug 2009 17:34

Re: Ausgabe der Daten 2er Tabellen statt einer
 
Oder einem Join

jfheins 16. Aug 2009 17:35

Re: Ausgabe der Daten 2er Tabellen statt einer
 
So in etwa:
SQL-Code:
select * from table1, table2 where id = 10
also einfach mit Kommas trennen.

Btw.: du brauchst die Backticks nicht unbedingt ;)

P.S.: Parameter sind wirklich besser als Stringverkettung. Solltest du dir mal anschauen ;)

youuu 16. Aug 2009 17:39

Re: Ausgabe der Daten 2er Tabellen statt einer
 
Zitat:

Zitat von Jürgen Thomas
Mit UNION können zwei SELECT-Ergebnisse in eines zusammengefasst und "am Stück" zurückgegeben werden.

Übrigens ist dein Verfahren, einen SQL-Text per String-Verknüpfung zu erstellen, ziemlich miserabel. Du hast schon Probleme mit den Hochkommata; wie soll das erst bei Zahlen und Datumsformaten werden - ganz abgesehen von SQL-Injection. Dafür sind unbedingt Parameter zu verwenden.

Gruß Jürgen

Das war gerade ein kleines Bsp. normal erfolgt alles über Parameter.

mkinzler 16. Aug 2009 17:41

Re: Ausgabe der Daten 2er Tabellen statt einer
 
SQL-Code:
... WHERE Customer_number = :customer_number ...

youuu 16. Aug 2009 17:45

Re: Ausgabe der Daten 2er Tabellen statt einer
 
Zitat:

Zitat von jfheins
So in etwa:
SQL-Code:
select * from table1, table2 where id = 10

Wie kann ich die einkommenden Werte dann unterscheiden, wenn der Wert in beiden Tabellen existiert.

mkinzler 16. Aug 2009 17:51

Re: Ausgabe der Daten 2er Tabellen statt einer
 
Durch Aliasing zudem brauchst du ja nur die Spalten abfragen, welche du benötigst.

SQL-Code:
Select
    t1.position as pos1, t2.position as pos2
...

youuu 16. Aug 2009 18:01

Re: Ausgabe der Daten 2er Tabellen statt einer
 
Naja das sind knapp 20-30 Werte, wird das dann nicht etwas lang und unübersichtlich?

mkinzler 16. Aug 2009 18:09

Re: Ausgabe der Daten 2er Tabellen statt einer
 
Brauchst du den alle?
Sonst würden die Spalten verschiedene Postfixes bekommen

youuu 16. Aug 2009 18:38

Re: Ausgabe der Daten 2er Tabellen statt einer
 
Ja Brauche alle, dann werd ich wohl wie du schon sagtest verschiedene Postfixes verwenden müssen.

mkinzler 16. Aug 2009 18:42

Re: Ausgabe der Daten 2er Tabellen statt einer
 
das wird automatisch gemacht

position_1 usw

youuu 16. Aug 2009 19:34

Re: Ausgabe der Daten 2er Tabellen statt einer
 
Habe es jetzt direkt in der DB geändert und besser zugewiesen, nun stellt sich die Frage nicht mehr, ist denke ich übersichtlicher.

youuu 16. Aug 2009 20:05

Re: Ausgabe der Daten 2er Tabellen statt einer
 
Delphi-Quellcode:
FormMain.QueryRead.SQL.Text:='SELECT * FROM `'+Tabelle.customer+'`, `'+Tabelle.contacts+'` WHERE customer_number = :Customer_Number';
Sagt mir der Delphi, das die Wehre Klausel nicht eindeutig ist oder deute ich den Fehler falsch?


#23000Column 'customer_number' in where clause is ambiguous'.

mkinzler 16. Aug 2009 20:07

Re: Ausgabe der Daten 2er Tabellen statt einer
 
Wenn beide Tabellen dieses Feld besitzen musst du hier den Alias der tabelle angeben

youuu 16. Aug 2009 20:08

Re: Ausgabe der Daten 2er Tabellen statt einer
 
Oh ok, aber wie sieht das aus?

mkinzler 16. Aug 2009 20:17

Re: Ausgabe der Daten 2er Tabellen statt einer
 
Delphi-Quellcode:
FormMain.QueryRead.SQL.Text:='SELECT * FROM `'+Tabelle.customer+'` t1 , `'+Tabelle.contacts+'` t2  WHERE t1.customer_number = :Customer_Number and t2.customer_nummer = :Customer_number;';


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:00 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-2025 by Thomas Breitkreuz