AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Was ist an diesem (Sub)query falsch?
Thema durchsuchen
Ansicht
Themen-Optionen

Was ist an diesem (Sub)query falsch?

Ein Thema von Namenloser · begonnen am 14. Mai 2007 · letzter Beitrag vom 16. Mai 2007
Antwort Antwort
Seite 2 von 3     12 3      
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: Was ist an diesem (Sub)query falsch?

  Alt 15. Mai 2007, 07:20
Hallo,

zeig doch noch mal dein Delete mit Subquery.
Es kann auch sein, dass mysql das noch nicht im delete kann.
Subqueries sind ja auch erst mit der 4er(oder 4.er ?) Version eingeführt worden.


Heiko
Heiko
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#12

Re: Was ist an diesem (Sub)query falsch?

  Alt 15. Mai 2007, 14:21
Das query ist dieses hier:
Zitat von omata:
Lass doch mal den Prefix weg...

SQL-Code:
DELETE FROM gb_verificationid
WHERE id < (SELECT MAX(id) - 20
            FROM gb_verificationid)
Gruss
Thorsten
Ich habe MySQL4.1 installiert, das müsste eigentlich gehen.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#13

Re: Was ist an diesem (Sub)query falsch?

  Alt 15. Mai 2007, 14:28
Hallo,

kann so nicht gehen.
Du benutzt die gleiche Tabelle und deren Feld Id
zweimal. Da muss man dann Tabellen-Aliase benutzen.
Das SubSelect könnte ja auch eine völlig andere Tabelle sein.


SQL-Code:
DELETE FROM gb_verificationid gb1
WHERE gb1.id < (SELECT MAX(gb2.id) - 20
            FROM gb_verificationid gb2)

Heiko
Heiko
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#14

Re: Was ist an diesem (Sub)query falsch?

  Alt 15. Mai 2007, 16:16
das funktioniert leider auch nicht, da stimmt wohl die syntax nicht . "#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE gb1.id < (SELECT MAX(gb2.id) - 20
FROM gb_verificationid gb2)' at line 2
"
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: Was ist an diesem (Sub)query falsch?

  Alt 15. Mai 2007, 16:34
Hallo,

das gesuchte Statement in der Syntax von MySQL ab Version 4.0.2 sieht so aus:

SQL-Code:
DELETE FROM gb_verificationid t1
USING t1, gb_verificationid t2
WHERE t2.id < (SELECT MAX(id) - 20 FROM t2)
Grüße vom marabu
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#16

Re: Was ist an diesem (Sub)query falsch?

  Alt 15. Mai 2007, 17:46
dankeschön, aber das klappt leider auch nicht
Angeblich existiert <datenbankname>.1 nicht. Tut es aber...
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: Was ist an diesem (Sub)query falsch?

  Alt 15. Mai 2007, 18:19
Zitat von hoika:
...kann so nicht gehen.
Du benutzt die gleiche Tabelle und deren Feld Id
zweimal. Da muss man dann Tabellen-Aliase benutzen.
Das SubSelect könnte ja auch eine völlig andere Tabelle sein.
Kann es nicht!
Beides sind völlig getrennte Namensräume und dabei gilt: lokal geht immer vor global.
Also die Aussage kann so nicht gehen kann nicht stimmen. Das Problem scheint ein anderes zu sein.

@NamenLozer: Kannst du nicht mal MySQL5 benutzen? Oder ist das ein Webserver an dem du die Version nicht verändern kannst?

Edit: Habe das gerade selber mal mit MySQL5 ausprobiert. Das scheint wirklich nicht zu gehen. Das finde ich sehr schade. Man kann scheinbar die zu verändernde Tabelle nicht nochmal in einer SubQuery der gleichen Abfrage aufführen. Schade, ich fand MySQL mal richtig gut.

Gruss
Thorsten
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#18

Re: Was ist an diesem (Sub)query falsch?

  Alt 15. Mai 2007, 19:07
Hallo,

Zitat von NamenLozer:
dankeschön, aber das klappt leider auch nicht
nur damit kein falscher Eindruck entsteht: Es klappt vielleicht bei dir nicht.

Meine Tests unter MySQL 4.0.5 hat das Statement erfolgreich absolviert.

Freundliche Grüße
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#19

Re: Was ist an diesem (Sub)query falsch?

  Alt 15. Mai 2007, 20:45
Dann muss sich da wohl was geändert haben zwischen 4.0 und 4.1. Schade. Naja, dann werd ichs halt mit zwei Queries machen, funktioniert ja auch.

Trotzdem Danke an alle, die versucht haben, mir zu helfen!

(wenn jemand trotzdem noch eine idee hat, wie's gehen könnte, darf er es natürlich gerne sagen )
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#20

Re: Was ist an diesem (Sub)query falsch?

  Alt 15. Mai 2007, 20:56
Hallo,

die Syntax DELETE USING wird ab MySQL Version 4.0.2 bis hin zur aktuellen Version unterstützt. Du musst langsam anfangen den Fehler bei deiner Umsetzung zu suchen - oder du verwendest deine Umgehungslösung.

Gute Nacht
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 22:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz