Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Trennung 2er MySQL Befehle (https://www.delphipraxis.net/52610-trennung-2er-mysql-befehle.html)

LeahCim 31. Aug 2005 14:54

Datenbank: MySQL • Version: ka • Zugriff über: ADO

Trennung 2er MySQL Befehle
 
So...

wie kann ich mehrere Select-Befehle in MySQL hintereinander weg schreiben?

Also nicht so:

SQL-Code:
SELECT * FROM Bla
SELECT * FROM Blub
SELECT * FROM BlaBlub
Sondern so(oder so ähnlich):

SQL-Code:
SELECT * FROM Bla SELECT * FROM Blub SELECT * FROM BlaBlub

Da muss doch bestimmt was zwischen...oder?

dfried 31. Aug 2005 14:57

Re: MySQL frage für Anfänger...
 
Erst mal ne Frage dazu, was willst du damit machen/erreichen? Soll das ein Script werden oder innerhalb eines Programmes so verwendet werden?

Gruß
Daniel

Delphi-Freak 31. Aug 2005 15:01

Re: MySQL frage für Anfänger...
 
Probiers mal mit »;«, ich glaube, der wird auch bei MySQL verwendet.

Die Muhkuh 31. Aug 2005 15:04

Re: MySQL frage für Anfänger...
 
So, würde ich sagen (wie Gerhard auch schon meinte):

SQL-Code:
SELECT * FROM Bla; SELECT * FROM Blub; SELECT * FROM BlaBlub;

LeahCim 31. Aug 2005 15:05

Re: MySQL frage für Anfänger...
 
Ich brauche das, weil ich den SQL-String manuel übers Delphi einfügen will...also wenn das Prog schon läuft...und da kann ich ja leider kein ENTER machen...bist du sicher das es ; ist? Dabei kommt immer ne fehlermeldung das da am Ende n Zeichen gefunden wurde...

Delphi-Freak 31. Aug 2005 15:07

Re: MySQL frage für Anfänger...
 
Dann machs doch mit #13#10:
Delphi-Quellcode:
'SELECT * FROM Bla'+#13#10+'SELECT * FROM Blub'+#13#10+'SELECT * FROM BlaBlub'
Edit: mit #.. fügt man ein Zeichen ein, wobei man den Index des Zeichens angibt (es gibt dann noch die Möglichkeit #$.., um den Index hexadezimal anzugeben).
#13#10 ist der Zeilenumbruch unter Windows,
#10 wäre er unter Unix und #13 unter Mac

LeahCim 31. Aug 2005 15:12

Re: MySQL frage für Anfänger...
 
Delphi-Quellcode:
SQL.Text:='SELECT exNR, exName, exVorname, exNote1, exNote2 FROM '+tabelle+#13#10' SELECT exPrNR FROM '+tabelle2;

Was ist daran jetzt falsch? Er sagt mir Systaxfehler in FROM Klausel....Tabelle 1 und 2 sind Variablen die auf ne Combobox zugreifen....

Palando 31. Aug 2005 15:13

Re: MySQL frage für Anfänger...
 
#10 alleine für Windows genügt doch auch?
(Hab ich zumindest mal bei ner Messagebox benutzt...)

dfried 31. Aug 2005 15:18

Re: MySQL frage für Anfänger...
 
Delphi-Quellcode:
SQL.Text:='SELECT exNR, exName, exVorname, exNote1, exNote2 FROM '+tabelle+#13#10' SELECT exPrNR FROM '+tabelle2;
Du kannst keine zwei selects in einem "Aufruf" hintereinander kleben, was soll dir Delphi denn da für eine Ergebnisstruktur zurückgeben? Die Struktur der ersten Anfrage oder der zweiten?

Du musst die Selects nacheinander ausführen:

SQL.Text:='SELECT exNR, exName, exVorname, exNote1, exNote2 FROM '+tabelle;
-> Ausführen

SQL.Text:='SELECT exPrNR FROM '+tabelle2;
-> Ausführen

Dann brauchst du auch kein abschliessendes Semikolon.

r_kerber 31. Aug 2005 15:20

Re: MySQL frage für Anfänger...
 
Gib Deinem Thread bitte einen aussagekräftigen Namen. Unter MySQL frage für Anfänger... kann sich keiner etwas vorstellen!

LeahCim 31. Aug 2005 15:30

Re: MySQL frage für Anfänger...
 
Zitat:

Zitat von r_kerber
Gib Deinem Thread bitte einen aussagekräftigen Namen. Unter MySQL frage für Anfänger... kann sich keiner etwas vorstellen!

Aber was? Währe mir was eingefallen hätte ich das gemacht...aber ok...

edit---->Besser so? :-D

LeahCim 31. Aug 2005 15:53

Re: Trennung 2er MySQL Befehle
 
So...nun habe ich es so:

Delphi-Quellcode:
SQL.Text:='SELECT exNR, exName, exVorname, exNote1, exNote2 FROM '+tabelle;
           open;
           close;
           SQL.Clear;
           SQL.Text :='SELECT exPrNr FROM '+tabelle2;
           open;

Nun habe ich das Problem, dass der nur Select Nr. 2 im Grid dastellt...er soll aber beide dastellen... :gruebel:

Jelly 31. Aug 2005 15:54

Re: Trennung 2er MySQL Befehle
 
Du kannst immer nur einen Befehl nach dem anderen an den Server schicken.

Wenn deine 3 Tabellen aber tatsächlich genau die gleiche Datenstruktur haben, kannst du noch folgendes probieren:

SQL-Code:
SELECT * FROM Bla
union
SELECT * FROM Blub
union
SELECT * FROM BlaBlub
Die Spaltenanzahl und die -namen müssen aber in allen 3 Tabelen gleich sein.

LeahCim 31. Aug 2005 15:57

Re: Trennung 2er MySQL Befehle
 
Mir fällt grade auf, dass ich evtl. erwähnen sollte das ich nicht auf nen MYSQL Server zugreife, sondern auf ne Excel Datei :stupid:

Jelly 31. Aug 2005 15:58

Re: Trennung 2er MySQL Befehle
 
Zitat:

Zitat von LeahCim
Mir fällt grade auf, dass ich evtl. erwähnen sollte das ich nicht auf nen MYSQL Server zugreife, sondern auf ne Excel Datei :stupid:

Wieso gibts du denn beim Threadanfang MySQL an!

Ich weiss nicht ob Excel die Unions versteht. Probiers aus.

LeahCim 31. Aug 2005 16:03

Re: Trennung 2er MySQL Befehle
 
War da grade in Gedanken...das Toll was ich Momentan schreibe soll Daten aus ner Excel Tabelle auslesen und ins MySQL exportieren...kurz: Ein Denkfehler meinerseits!

LeahCim 31. Aug 2005 16:54

Re: Trennung 2er MySQL Befehle
 
Zitat:

Zitat von LeahCim
So...nun habe ich es so:

Delphi-Quellcode:
SQL.Text:='SELECT exNR, exName, exVorname, exNote1, exNote2 FROM '+tabelle;
           open;
           close;
           SQL.Clear;
           SQL.Text :='SELECT exPrNr FROM '+tabelle2;
           open;

Nun habe ich das Problem, dass der nur Select Nr. 2 im Grid dastellt...er soll aber beide dastellen... :gruebel:


HELP!!!

Jelly 31. Aug 2005 16:57

Re: Trennung 2er MySQL Befehle
 
Zitat:

Zitat von LeahCim
HELP!!!

Bevor du hier rumschreist, und alle 30 Minuten den Thread hervorpushst... Hast du meine Beiträge überhaupt gelesen.
Sowas mach mich sauer :twisted:

dfried 31. Aug 2005 17:01

Re: Trennung 2er MySQL Befehle
 
Jelly hat doch schon geschrieben, dass du evtl. einen union machen kannst (wenn die tabellenstrukturen gleich sind)! :!:

Wenn nicht könntest du dir immer noch eine Tabelle im speicher anlegen (z.B. über TClientDataset) die du dann nacheinander erst mit den werten der erten Abfrage füllst und dann die werte der zweiten anhängst. Dieses ClientDataset kannst du dann auch an dein Grid dranhängen.

Ich verteh aber immer noch nicht den Sinn, warum beide Ergebnismengen in einem Grid erscheinen sollen?!? :gruebel:

Wenn du, wie du sagst, von Excel nach MySql Daten übertragen sollst, dann übertrag halt erst die Daten der ersten Abfrage und danach der zweiten!

Gruß
Daniel

LeahCim 31. Aug 2005 17:05

Re: Trennung 2er MySQL Befehle
 
Zitat:

Zitat von Jelly
Zitat:

Zitat von LeahCim
HELP!!!

Bevor du hier rumschreist, und alle 30 Minuten den Thread hervorpushst... Hast du meine Beiträge überhaupt gelesen.
Sowas mach mich sauer :twisted:

Nein, ich tu nur so...manmanman...ich schreib nicht ohne Grund Hilfe...der Zeigt mit nur die Daten des 2ten Selects an...

Jelly 31. Aug 2005 17:08

Re: Trennung 2er MySQL Befehle
 
Zeig doch mal dein Code. Bislang seh ich immer nur vereinzelte Schnipsel von SQL Befehlen.

LeahCim 31. Aug 2005 21:58

Re: Trennung 2er MySQL Befehle
 
Zitat:

Zitat von dfried
Jelly hat doch schon geschrieben, dass du evtl. einen union machen kannst (wenn die tabellenstrukturen gleich sind)! :!:

Wenn nicht könntest du dir immer noch eine Tabelle im speicher anlegen (z.B. über TClientDataset) die du dann nacheinander erst mit den werten der erten Abfrage füllst und dann die werte der zweiten anhängst. Dieses ClientDataset kannst du dann auch an dein Grid dranhängen.

Ich verteh aber immer noch nicht den Sinn, warum beide Ergebnismengen in einem Grid erscheinen sollen?!? :gruebel:

Wenn du, wie du sagst, von Excel nach MySql Daten übertragen sollst, dann übertrag halt erst die Daten der ersten Abfrage und danach der zweiten!

Gruß
Daniel

Wenn es irgendwie möglich ist, dann möchte ich das so haben...sonst muss ich eben eine 2tes Grid nehemen...

Der Code kommt morgen...hab ich grade nicht zur Hand! :cat:

Jelly 31. Aug 2005 22:07

Re: Trennung 2er MySQL Befehle
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich spring gleich hier im Kasten :shock:
nachdem ich selbst probiert hab, ist jetzt auch sichergestellt, dass Unions in Excel auf funktionieren. Ich frag mich, warum ich mich hier wund tippe.

Hab jetzt mal ein Beispielprojekt angehängt. Kuck dir da mal an. Vorher gibts von mir keine Antworten mehr.

LeahCim 31. Aug 2005 22:23

Re: Trennung 2er MySQL Befehle
 
Und ich wundere mich schon warum du dich so aufregst....und dann finde ich nicht eine Zeile im Code...also nochmal: Ich brauche den SQL Text in nem Delphi-Code...

Quasi so:

Delphi-Quellcode:
ADOQuery1.SQL.Text := SELECT Bla FROM '+Variable1+ ??? +' SELECT BlaBla FROM '+Variable2;
Wobei "???" der Befehl ist, mit dem ich 2 Select Befehle zusammenführen kann...oder das ganzu eben auch in 2 Zeilen...dann geht das aber nicht mit dem einem Grid...

Jelly 31. Aug 2005 22:26

Re: Trennung 2er MySQL Befehle
 
Ich gebs auf :wall:

LeahCim 31. Aug 2005 22:31

Re: Trennung 2er MySQL Befehle
 
Dann lass es...ich habe dich zu nichts gezwungen :(

Schickst mir n mini-Projekt, aus dem ich schon mit nem Editor entnehmen kann, das du den SQL Code direkt eingibst, was so ja auch nicht schlimm ist, womit ich aber nichts anfangen kann...Da mag das ja auch klappen...aber ich bekomme es irgendwie nicht hin es direkt innen Delphicode zu schreiben...son beispiel währe hilfreicher... :?

dfried 31. Aug 2005 22:32

Re: Trennung 2er MySQL Befehle
 
Zitat:

Zitat von LeahCim
Und ich wundere mich schon warum du dich so aufregst....und dann finde ich nicht eine Zeile im Code...also nochmal: Ich brauche den SQL Text in nem Delphi-Code...

Quasi so:

Delphi-Quellcode:
ADOQuery1.SQL.Text := SELECT Bla FROM '+Variable1+ ??? +' SELECT BlaBla FROM '+Variable2;
Wobei "???" der Befehl ist, mit dem ich 2 Select Befehle zusammenführen kann...oder das ganzu eben auch in 2 Zeilen...dann geht das aber nicht mit dem einem Grid...

Und genau an der stelle wo du suchen würdest steht auch die Lösung!!!!!
Schau doch einfach mal im Objektinspektor bei der Komponente "qry1" im property "SQL" nach vielleicht findest du dort was du suchst!!!

Brauchst du an Ostern auch solange bis du die Eier findest? :-D

LeahCim 31. Aug 2005 22:35

Re: Trennung 2er MySQL Befehle
 
Ich bin grade nicht an dem Rechner wo ich Delphi drauf habe...aber wenn ich das richtig in erinnerung habe, stehr da nur : STRING (oder so...) aber ich schau morgen mal...

Trotzdem Danke für eure Gedult...ich bin eben erst seit 2 Monaten dabei...und deshalb :dp:

LeahCim 1. Sep 2005 07:54

Re: Trennung 2er MySQL Befehle
 
So...wie ich es gesagt habe: (TStrings) :roteyes:

dfried 1. Sep 2005 08:13

Re: Trennung 2er MySQL Befehle
 
Und wo ist jetzt das Problem mit TStrings?

Da gibt es im Objektinspektor so einen hübschen kleinen Button mit drei Punkten drauf, hau einfach mal da drauf und freu dich an dem was du dann siehst!!! :roteyes:

LeahCim 1. Sep 2005 08:22

Re: Trennung 2er MySQL Befehle
 
ja, dann sehe ich den SQL Code...


und was bringt mir das? NICHTS! Ich muss das ganze ins Delphi eingeben...und da kann ich nunmal nur hintereinander schreiben... Aber hier erstmal der Code...damit auch Jelly zufreiden ist:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var tabelle, tabelle2:string;
begin
if box1.Text = 'Bitte auswählen' then
begin
Showmessage('Es muss eine Tabelle ausgewählt werden!')
end
else
begin
AdoQuery1.Connection := AdoConnection1;
Tabelle := '['+Box1.items[Box1.itemindex]+']';
Tabelle2 := '['+Combobox1.items[Combobox1.itemindex]+']';
 With AdoQuery1 do
         begin
           SQL.Text:='SELECT exNR, exName, exVorname, exNote1, exNote2 FROM '+tabelle; //
           open;                                                                       //
           close;                                                                      //--> Und genau hier ist mein Problem! Da kann ich nicht einfach stumpf nen
           SQL.Clear;                                                                  //--> MySQL Code untereinander wech schreiben...und so geht nur der 2te Select
           SQL.Text :='SELECT exPrNr FROM '+tabelle2;                                  //
           open;                                                                       //

form2.showmodal;
end;
end;
end;
so...ich glaube jeden kleinen Button brauche ich nicht posten...

Sharky 1. Sep 2005 08:38

Re: Trennung 2er MySQL Befehle
 
Hai LeahCim,

ich verstehe noch nicht genau was Du erreichen möchtest.
Wenn Du diesen Code von Dir benutzt

Delphi-Quellcode:
.
.
 With AdoQuery1 do
 begin
   SQL.Text:='SELECT exNR, exName, exVorname, exNote1, exNote2 FROM '+tabelle; //
   open; // Daten werden aus der Tabelle gelesen
   close; // und sofort wird die Tabelle geschlossen -> Die Daten stehen nicht mehr zur verfügung
   SQL.Clear;
   SQL.Text :='SELECT exPrNr FROM '+tabelle2;
   open;
 end;
.
.
Macht das erste "SELECT" ja keinen Sinn. Die Daten werden ja nie benutzt.

moritz 1. Sep 2005 08:42

Re: Trennung 2er MySQL Befehle
 
Wie wär's mit sowas?

Code:
SELECT tbl1.a,tbl1.b,tbl2.a,tbl2.b,tbl3.a,tbl3.b from bla tbl1, blä tbl2, blabla tbl3
Müsste so doch eigentlich gehen, oder?

LeahCim 1. Sep 2005 08:51

Re: Trennung 2er MySQL Befehle
 
Zitat:

Zitat von Sharky
Hai LeahCim,

ich verstehe noch nicht genau was Du erreichen möchtest.
Wenn Du diesen Code von Dir benutzt

Delphi-Quellcode:
.
.
 With AdoQuery1 do
 begin
   SQL.Text:='SELECT exNR, exName, exVorname, exNote1, exNote2 FROM '+tabelle; //
   open; // Daten werden aus der Tabelle gelesen
   close; // und sofort wird die Tabelle geschlossen -> Die Daten stehen nicht mehr zur verfügung
   SQL.Clear;
   SQL.Text :='SELECT exPrNr FROM '+tabelle2;
   open;
 end;
.
.
Macht das erste "SELECT" ja keinen Sinn. Die Daten werden ja nie benutzt.

Aber so geht es nicht
Delphi-Quellcode:
With AdoQuery1 do
         begin
           SQL.Text:='SELECT exNR, exName, exVorname, exNote1, exNote2 FROM '+tabelle;
           open;
           SQL.Text :='SELECT exPrNr FROM '+tabelle2;
           open;
und so auch nicht:

Delphi-Quellcode:
With AdoQuery1 do
         begin
           SQL.Text:='SELECT exNR, exName, exVorname, exNote1, exNote2 FROM '+tabelle;
           open;
           SQL.Clear;
           SQL.Text :='SELECT exPrNr FROM '+tabelle2;
           open;

LeahCim 1. Sep 2005 08:51

Re: Trennung 2er MySQL Befehle
 
Zitat:

Zitat von moritz
Wie wär's mit sowas?

Code:
SELECT tbl1.a,tbl1.b,tbl2.a,tbl2.b,tbl3.a,tbl3.b from bla tbl1, blä tbl2, blabla tbl3
Müsste so doch eigentlich gehen, oder?

Und das versteh ich nicht.... :?:

dfried 1. Sep 2005 08:53

Re: Trennung 2er MySQL Befehle
 
Das erzeugt einfach ein kartesisches Produkt aller Datensätze der angegebenen Tabellen.
Was aber (wenn ich dich vielleicht ein bisschen verstanden habe) glaub ich nicht das ist, was du gerne hättest.

dfried 1. Sep 2005 08:57

Re: Trennung 2er MySQL Befehle
 
Zitat:

Zitat von LeahCim
und so auch nicht:

Delphi-Quellcode:
With AdoQuery1 do
         begin
           SQL.Text:='SELECT exNR, exName, exVorname, exNote1, exNote2 FROM '+tabelle;
           open;
           SQL.Clear;
           SQL.Text :='SELECT exPrNr FROM '+tabelle2;
           open;

Wenn du die Beiträge von Jelly bzw. mir aufmerksam gelesen hättest, dann müsste dir langsam klar werden, dass das wsa du willst nur mit dem von Jelly angesprochenen "UNION" (mit all seinen Einschränkungen) funktioniert, ansonsten bekommst du die Daten meherer Selects eben nicht in ein DBGrid, ausser du bastelst dir halt (wie ich vorgeschlagen habe) von Hand eine "eigene" Tabelle im Speicher zusammen und hängst die an dein Grid!

LeahCim 1. Sep 2005 09:01

Re: Trennung 2er MySQL Befehle
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, jetzt mal das ganze Projekt...


die Excel Datei kann ich leider nicht online stellen...TOP Secret! :wink:

@dfried

Wie soll ich das Union denn mit in den Code bringen? Alle schreiben hier immer nur das Jelly recht hat, aber keiner gibt mir ein beispiel, wo ich vorher schonmal drum gebeten habe...nichtmal Jelly selber...und das bringt mich auch nicht weiter...

dfried 1. Sep 2005 09:06

Re: Trennung 2er MySQL Befehle
 
Na, wenn dir das Beispiel von Jelly (kompletter Code mit Beispiel XLS-Datei!!!) nicht reicht, dann kann dir glaub ich keiner helfen.

Er hat dir in seinem Beispiel genau demonstriert, wie das mit dem Union funktioniert!!!
Der einzige Unterschied zu dem was du willst, ist der, dass er eben den SQL-Text direkt in der Komponente eingetragen hat anstatt im Code zuzuweisen!

edit: Zur Vervollständigung: um das direkt im Code zuzuweisen könntest du das z.B. so machen:
Delphi-Quellcode:
qry1.SQL.Text := 'select * from Liste1'+#13#10+
                 'union'+#13#10+
                 'select * from Liste2'+#13#10+
                 'order by Name, Vorname';

LeahCim 1. Sep 2005 09:08

Re: Trennung 2er MySQL Befehle
 
Zitat:

Zitat von dfried
Na, wenn dir das Beispiel von Jelly (kompletter Code mit Beispiel XLS-Datei!!!) nicht reicht, dann kann dir glaub ich keiner helfen.

Er hat dir in seinem Beispiel genau demonstriert, wie das mit dem Union funktioniert!!!
Der einzige Unterschied zu dem was du willst, ist der, dass er eben den SQL-Text direkt in der Komponente eingetragen hat anstatt im Code zuzuweisen!

:wall: Hast du eigentlich meinen ersten Post gelesen? Hier noch mal zur erinnerung:

Zitat:

wie kann ich mehrere Select-Befehle in MySQL hintereinander weg schreiben?


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 Uhr.
Seite 1 von 2  1 2      

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