Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

SQL-Befehl

Diskussion: SQL-Befehl im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Ich hab ein kleines Problemchen. Und zwar geht es um einen SQL Befehl. Ich habe eine Tabelle und will ...

Antwort
Alt 14.04.05, 17:20   #1 (permalink)
Member of Honour
 
Registriert seit: 01.02.02
AaFreak Leistung: Facit NTK
AaFreak eine Nachricht über ICQ schicken
Likes: 0
Standard SQL-Befehl

Anzeige

Ich hab ein kleines Problemchen.
Und zwar geht es um einen SQL Befehl.

Ich habe eine Tabelle und will dort einen neuen Satz anlegen mit INSERT INTO Tabelle

In diesen INSERT-Befehl möchte ich 2 SELECT_Befehle unterbringen die aber auf die gleiche Tabelle zugreifen.

Also die Tabelle heißt IMPORT.
Geht das überhaupt was ich will?
Oder muss ich erst die 2 SELECTS machen und die Ergebnisse dann in den INSERT Befehl setzten? Also ich mein des geht schon irgendwie!!

Hier ist der SQL-Befehl:

Code:
INSERT INTO IMPORT (BEZEI, TAB, FELD, BEZLFD, BEZNR, LFDNR)
VALUES ('Aufbau3', 'FIBADR', 'FANAME1', 1,
(SELECT COUNT(*) + 1 AS BEZNR FROM IMPORT WHERE BEZLFD = 1),
(SELECT COUNT(*) + 1 AS LFDNR FROM IMPORT))
AaFreak ist offline   Mit Zitat antworten
Alt 14.04.05, 17:26   #2 (permalink)
 
Registriert seit: 07.04.05
skike Leistung: Facit NTK
Likes: 0
Standard

Probier doch einfach aus ob's geht
Wenn ja gehts, wenn nein nicht!
Denke aber eher nicht...

Ach ja. Es gibt (Tabellen-) Namen, die man nicht benutzen sollte. Ich meine 'import' wäre einer davon!
skike ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 14.04.05, 17:41   #3 (permalink)
Member of Honour
Themenstarter
 
Registriert seit: 01.02.02
AaFreak Leistung: Facit NTK
AaFreak eine Nachricht über ICQ schicken
Likes: 0
Standard

-_-

Ich hab es schon oft genug versucht aber es geht einfach net.
Ich kann die Tabelle nennen wie ich will und es geht nicht.
Und wieso sollte ich die Tabelle nicht IMPORT nennen?

Das Problem ist MSACCESS stürtzt ab wenn ich den Befehl laufen lasse.

Ich hab des Problem schon gelöst (erst die 2 SELECT und dann den INSERT mit den Werten der SELECTS) aber ich will des in einem SQL Befehl haben. Ich hoffe des geht irgendwie und mir kann einer helfen!
AaFreak ist offline   Mit Zitat antworten
Alt 14.04.05, 17:51   #4 (permalink)
 
Registriert seit: 07.04.05
skike Leistung: Facit NTK
Likes: 0
Standard

Wie gesagt, ich denke nicht dass das geht!
Warum _muss_ es denn unbedingt ein Befehl sein?

Manche Namen sollte man nicht benutzen, da sie reserviert sind (z.b. für Befehle). Dadruch _kann_ es zu Problemen kommen, _muss_ aber nicht. Daher am besten einfach nicht benutzen (z.b. verhindern durch vorranstellen eines buchstabens o.ä.: S_IMPORT)
skike ist offline   Mit Zitat antworten
Alt 14.04.05, 18:01   #5 (permalink)
Member of Honour
Themenstarter
 
Registriert seit: 01.02.02
AaFreak Leistung: Facit NTK
AaFreak eine Nachricht über ICQ schicken
Likes: 0
Standard

die Tabelle heißt auch FIBIMPORT ^^ (Fibu Import)
habs hier halt nur in kurzform reingeschrieben

Das ganze sollte ein IMPORT-Programm für eine FIBU Software werden.
Und es funktioniert ja auch alles. Nur hätte es mich interessiert ob es geht
AaFreak ist offline   Mit Zitat antworten
Alt 14.04.05, 18:06   #6 (permalink)
 
Registriert seit: 07.04.05
skike Leistung: Facit NTK
Likes: 0
Standard

Wie gesagt - Glaube es nicht...
Aber such vielleicht mal auf http://dev.mysql.com oder www.php.de falls dur das nocht nicht getan hast.
skike ist offline   Mit Zitat antworten
Alt 15.04.05, 10:10   #7 (permalink)
Member of Honour
Themenstarter
 
Registriert seit: 01.02.02
AaFreak Leistung: Facit NTK
AaFreak eine Nachricht über ICQ schicken
Likes: 0
Standard

Achja und es geht wie gesagt um ACCESS-SQL/ MSSQL usw.
aber nicht MySql. Deine Links haben mir gar nicht weitergeholfen.

Aber gut. Hab des Problem sowieso ganz anderst gelöst. Noch viel einfach und schneller, und besser
AaFreak ist offline   Mit Zitat antworten
Alt 15.04.05, 11:53   #8 (permalink)
Member of Honour
 
Benutzerbild von ivegotmail
 
Registriert seit: 28.05.03
ivegotmail Leistung: Z3
Likes: 1
Standard

Zitat:
Original von AaFreak
Aber gut. Hab des Problem sowieso ganz anderst gelöst. Noch viel einfach und schneller, und besser
dann zeig doch mal deine lösung.
__________________
http://livehabo.hackerboard.de | http://livebb.sourceforge.net
ivegotmail ist offline   Mit Zitat antworten
Alt 15.04.05, 13:07   #9 (permalink)
Member of Honour
Themenstarter
 
Registriert seit: 01.02.02
AaFreak Leistung: Facit NTK
AaFreak eine Nachricht über ICQ schicken
Likes: 0
Standard

Ich hab die Tabelle anderst Strukturiert und arbeite dann jetzt mit Schleifen und Arrays.

Ich programmiere in Smalltalk. Willst mein Code sehn?
AaFreak ist offline   Mit Zitat antworten
Alt 15.04.05, 13:15   #10 (permalink)
Member of Honour
 
Benutzerbild von ivegotmail
 
Registriert seit: 28.05.03
ivegotmail Leistung: Z3
Likes: 1
Standard

ja zeig mal her.
__________________
http://livehabo.hackerboard.de | http://livebb.sourceforge.net
ivegotmail ist offline   Mit Zitat antworten
Alt 15.04.05, 13:27   #11 (permalink)
Member of Honour
Themenstarter
 
Registriert seit: 01.02.02
AaFreak Leistung: Facit NTK
AaFreak eine Nachricht über ICQ schicken
Likes: 0
Standard

Also erst mal hab ich die Tabelle gekürzt.
Weil die LFDNR und BEZNR brauche ich gar nicht

Dann mein Code:

Code:
1 to: (listArrayValue size) do:
[ :ivar|
	
	sqlStr := 'INSERT INTO FIBIMPORT'.
	sqlStr := sqlStr ++ '(BEZEI, TAB, FELD, BEZLFD)'.
	sqlStr := sqlStr ++ 'VALUES ('.
	sqlStr := sqlStr ++ (bez) + ','.
	sqlStr := sqlStr ++ (tabellenName asDBString) + ','.
	sqlStr := sqlStr ++ ((listArrayValue at: ivar) asDBString) + ','.
	sqlStr := sqlStr ++ (ivar asNumber) + ')'.
	result := DB execSql: sqlStr.
	(result ~= 0) ifTrue:
	[
		fehler := 1.
	].
		
].
So siehts ungefähr aus. Also das ist jetzt nur der Teil für den INSERT-Befehl. Ihr könnt damit glaube ich sowieso net viel anfangen weil ihr net wirklich wisst für was die Tabelle da ist. Naja ich erklärs euch mal:

Ich will Daten in die Finanzbuchhaltungsdatenbank importieren und hab dafür ein Import-Programm gecodet.
In diesem Import-Programm kann man Dateiaufbau-Sätze speichern und die werden in dieser Tabelle FIBIMPORT gespeichert.

Ich hoffe das ist verständlich genug
AaFreak ist offline   Mit Zitat antworten
Alt 15.04.05, 14:13   #12 (permalink)
 
Registriert seit: 07.04.05
skike Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Original von AaFreak
Achja und es geht wie gesagt um ACCESS-SQL/ MSSQL usw.
aber nicht MySql. Deine Links haben mir gar nicht weitergeholfen.

Aber gut. Hab des Problem sowieso ganz anderst gelöst. Noch viel einfach und schneller, und besser
Sicherlich... Aber die MySQL befehle sind ja meist ziemlich die selben!
skike ist offline   Mit Zitat antworten
Alt 15.04.05, 15:11   #13 (permalink)
P21YALPHA
Guest
 
Likes:
Standard

hmm..., war da nicht mal was in irngendeiner Hochoffiziellen Doku gestanden?!?

So in der art(?):

a = SELECT X FROM Y WHERE Z = "blabla";
b = SELECT U FROM T WHERE S = "RTFM!";

INSERT INTO IMPORT(feld1,feld2) VALUES(@a,@b);

?!?
  Mit Zitat antworten
Alt 15.04.05, 22:51   #14 (permalink)
 
Registriert seit: 20.01.03
Zwirni Leistung: Z3
Likes: 0
Standard RE: SQL-Befehl

Zitat:
Code:
INSERT INTO IMPORT (BEZEI, TAB, FELD, BEZLFD, BEZNR, LFDNR)
VALUES ('Aufbau3', 'FIBADR', 'FANAME1', 1,
(SELECT COUNT(*) + 1 AS BEZNR FROM IMPORT WHERE BEZLFD = 1),
(SELECT COUNT(*) + 1 AS LFDNR FROM IMPORT))
Das geht eher so:

Code:
INSERT INTO IMPORT (BEZEI, TAB, FELD, BEZLFD, BEZNR, LFDNR) SELECT 'Aufbau3', 'FIBADR', 'FANAME1', 1, COUNT(*) + 1, count(*) + 1 FROM IMPORT WHERE BEZLFD = 1
Das select müsste man wohl noch etwas verfeiern, aber so wäre zumindest der Ansatz richtig.

mysql insert select <- erster Treffer

(und auch wenn es mit einem anderen Programm gesehen soll ist das mysql Handbuch oft eine sehr gute Quelle)
Zwirni ist offline   Mit Zitat antworten
Alt 16.04.05, 00:24   #15 (permalink)
Member of Honour
Themenstarter
 
Registriert seit: 01.02.02
AaFreak Leistung: Facit NTK
AaFreak eine Nachricht über ICQ schicken
Likes: 0
Standard

@ zwirni
so weit war ich auch schon
aber es geht nicht!

Zitat:
Die Ziel-Tabelle des INSERT-Statements darf nicht in der FROM-Klausel des SELECT-Teils der Anfrage erscheinen, weil es in ANSI-SQL verboten ist, aus derselben Tabelle auszuwählen (SELECT), in die eingefügt wird. (Das Problem liegt darin, dass das SELECT möglicherweise Datensätze finden würde, die früher während desselben Laufs eingefügt wurden. Wenn man Sub-Select-Klauseln verwendet, könnte die Situation schnell sehr verwirrend werden!)
Hey des geht ja doch. Geil. Dankeschön Zwirni!!!!
AaFreak ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » SQL-Befehl
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
dos befehl in VB? redips (In)security allgemein 1 05.04.06 16:31
linux befehl Syd Linux/UNIX 2 19.05.04 18:08
Web-URL oder Web-Befehl ??? # Speedy # (Web-) Design und webbasierte Sprachen 5 03.05.03 04:26
ll-Befehl bzw. ls-Befehl LordCyrix Linux/UNIX 11 18.10.02 21:19
while(cin>>var)befehl; Nornagest Code Kitchen 10 05.04.02 13:58


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61