![]() |
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:
Sondern so(oder so ähnlich):
SELECT * FROM Bla
SELECT * FROM Blub SELECT * FROM BlaBlub
SQL-Code:
SELECT * FROM Bla SELECT * FROM Blub SELECT * FROM BlaBlub
Da muss doch bestimmt was zwischen...oder? |
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 |
Re: MySQL frage für Anfänger...
Probiers mal mit »;«, ich glaube, der wird auch bei MySQL verwendet.
|
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;
|
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...
|
Re: MySQL frage für Anfänger...
Dann machs doch mit #13#10:
Delphi-Quellcode:
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).
'SELECT * FROM Bla'+#13#10+'SELECT * FROM Blub'+#13#10+'SELECT * FROM BlaBlub'
#13#10 ist der Zeilenumbruch unter Windows, #10 wäre er unter Unix und #13 unter Mac |
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.... |
Re: MySQL frage für Anfänger...
#10 alleine für Windows genügt doch auch?
(Hab ich zumindest mal bei ner Messagebox benutzt...) |
Re: MySQL frage für Anfänger...
Delphi-Quellcode:
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?
SQL.Text:='SELECT exNR, exName, exVorname, exNote1, exNote2 FROM '+tabelle+#13#10' SELECT exPrNR FROM '+tabelle2;
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. |
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!
|
Re: MySQL frage für Anfänger...
Zitat:
edit---->Besser so? :-D |
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: |
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:
Die Spaltenanzahl und die -namen müssen aber in allen 3 Tabelen gleich sein.
SELECT * FROM Bla
union SELECT * FROM Blub union SELECT * FROM BlaBlub |
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:
|
Re: Trennung 2er MySQL Befehle
Zitat:
Ich weiss nicht ob Excel die Unions versteht. Probiers aus. |
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!
|
Re: Trennung 2er MySQL Befehle
Zitat:
HELP!!! |
Re: Trennung 2er MySQL Befehle
Zitat:
Sowas mach mich sauer :twisted: |
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 |
Re: Trennung 2er MySQL Befehle
Zitat:
|
Re: Trennung 2er MySQL Befehle
Zeig doch mal dein Code. Bislang seh ich immer nur vereinzelte Schnipsel von SQL Befehlen.
|
Re: Trennung 2er MySQL Befehle
Zitat:
Der Code kommt morgen...hab ich grade nicht zur Hand! :cat: |
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. |
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:
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...
ADOQuery1.SQL.Text := SELECT Bla FROM '+Variable1+ ??? +' SELECT BlaBla FROM '+Variable2;
|
Re: Trennung 2er MySQL Befehle
Ich gebs auf :wall:
|
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... :? |
Re: Trennung 2er MySQL Befehle
Zitat:
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 |
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: |
Re: Trennung 2er MySQL Befehle
So...wie ich es gesagt habe: (TStrings) :roteyes:
|
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: |
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:
so...ich glaube jeden kleinen Button brauche ich nicht posten...
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; |
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:
Macht das erste "SELECT" ja keinen Sinn. Die Daten werden ja nie benutzt.
.
. 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; . . |
Re: Trennung 2er MySQL Befehle
Wie wär's mit sowas?
Code:
Müsste so doch eigentlich gehen, oder?
SELECT tbl1.a,tbl1.b,tbl2.a,tbl2.b,tbl3.a,tbl3.b from bla tbl1, blä tbl2, blabla tbl3
|
Re: Trennung 2er MySQL Befehle
Zitat:
Delphi-Quellcode:
und so auch nicht:
With AdoQuery1 do
begin SQL.Text:='SELECT exNR, exName, exVorname, exNote1, exNote2 FROM '+tabelle; open; SQL.Text :='SELECT exPrNr FROM '+tabelle2; open;
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; |
Re: Trennung 2er MySQL Befehle
Zitat:
|
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. |
Re: Trennung 2er MySQL Befehle
Zitat:
|
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... |
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'; |
Re: Trennung 2er MySQL Befehle
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:04 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