AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Exists

Ein Thema von alcaeus · begonnen am 24. Sep 2006 · letzter Beitrag vom 24. Sep 2006
Antwort Antwort
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#1

Problem mit Exists

  Alt 24. Sep 2006, 10:51
Datenbank: mySQL • Version: 4.0.26 • Zugriff über: PHP-Funktionen
Moin,

ich habe ein kleines Problem. Ich will folgendes Query ausfuehren:
SQL-Code:
DELETE FROM phpbb_topics_watch wt
  WHERE NOT EXISTS (
    SELECT topic_id FROM phpbb_topics t
    WHERE t.topic_id = wt.topic_id
  )
Der Server quittiert dies allerdings mit folgender Fehlermeldung:
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 'wt WHERE NOT EXISTS (SELECT user_id FROM phpbb_users


Auch folgendes Query funktioniert nicht, also liegt es nicht am DELETE, sondern wirklich am EXISTS:
SQL-Code:
SELECT wt.* FROM phpbb_topics_watch wt
  WHERE NOT EXISTS (
    SELECT topic_id FROM phpbb_topics t
    WHERE t.topic_id = wt.topic_id
  )
Das mySQL-Manual unterscheidet hier nicht zwischen 3.23, 4.0 und 4.1, gibt es EXISTS ueberhaupt in mySQL 4.0? Wenn nicht, wie kann ich dasselbe anders loesen, ohne zuerst manuell das Subquery auszufuehren zu muessen, und dann die IDs manuell in das Query reinzuschieben?

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
marabu

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

Re: Problem mit Exists

  Alt 24. Sep 2006, 10:59
Hallo Andreas,

MySQL 4.0 kennt keine SubSelects mit EXISTS. Das Kapitel im Handbuch (1.7.4.1 SubSelects) zeigt dir eine alternative Syntax.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#3

Re: Problem mit Exists

  Alt 24. Sep 2006, 11:09
Moin,

danke fuer den Hinweis. Welches Handbuch meinst du? Das Online-Handbuch behandelt in 1.7.4.1 was anderes. Meinst du Subqueries mit ANY bzw. ALL? Wenn ja, koenntest du mir bitte ein kleines Beispiel dazu geben? Ich versteh das Handbuch da nicht wirklich, bzw. weiss nicht wie ich die anwenden sollte

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
marabu

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

Re: Problem mit Exists

  Alt 24. Sep 2006, 11:13
Ich hatte im Online-Handbuch (HTML-Doku) von 4.0.5 nachgesehen:

Zitat:
1.7.4 MySQL Differences Compared to ANSI SQL92
...
1.7.4.1 SubSELECTs
...
The queries:

SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2);
SELECT * FROM table1 WHERE NOT EXISTS (SELECT id FROM table2
WHERE table1.id=table2.id);

Can be rewritten as:

SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id
WHERE table2.id IS NULL;
Vielleicht hilft dir das weiter

marabu
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: Problem mit Exists

  Alt 24. Sep 2006, 11:15
Oh, das ist nochmal einfacher als ich dachte, vielen Dank

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:22 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