php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.08.2004, 06:56  
Gast
 
Beiträge: n/a
Standard NOT EXISTS und NOT IN richtig anwenden

Hallo zusammen,

ich möchte alle referenzlosen Einträge in einer Tabelle aufräumen.

es gibt zwei Tabellen:

Referenztabelle p_farben mit einer color_id und einer color_bez

und

Eine Zuordnungstabelle artcol mit color_id und artnr (Artikelnummer)

Mit NOT EXISTS möchte ich die Einträge aus artcol rausfiltern, zu denen keine Einträge in p_farben existieren:

Code:
SELECT * FROM artcol
WHERE NOT EXISTS (
SELECT * FROM artikel
WHERE artikel.color_id = artcol.color_id
);
Beim Ausführen in php-admin und mysql-front kommt die Meldung:

Zitat:
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
'EXISTS(SELECT * FROM artikel WHERE color_id = artco
Die Abfrage habe ich mit dem manual schon abgeglichen und konnte keine Fehler finden.

Danke für die Hilfe...
epps_21
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.08.2004, 08:22  
Gast
 
Beiträge: n/a
Standard Re: NOT EXISTS und NOT IN richtig anwenden

Hi.

Code:
SELECT * FROM artcol
WHERE NOT EXISTS (
SELECT * FROM artikel
WHERE artikel.color_id = artcol.color_id
);
Müsste so gehen:

Code:
SELECT * FROM artcol
WHERE color_id NOT IN (
SELECT color_id FROM p_farben
);
Gruss
Andreas
  Mit Zitat antworten
Alt 11.08.2004, 08:35  
Gast
 
Beiträge: n/a
Standard

Danke für die Hilfe .
Leider funktioniert das auch nicht. Es erscheint auch die Fehlermeldung:

Zitat:
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 'SELECT color_id FROM p_farben)' at line 3
Die selbe Abfragen funktionieren z.B. in Informix problemlos!?

Ich benutze die MYSQL-Version 4.0.20a
Gruss epps_21
  Mit Zitat antworten
Alt 11.08.2004, 08:53  
Erfahrener Benutzer
 
Registriert seit: 01.12.2003
Beiträge: 4.113
supertramp
Standard

dann poste mal die Zeilen 1-5 und deklariere erkenntlich die Zeile 3. Du hast da nen anderen Fehler....
__________________
Aufstrebend, kompetent und werbefrei.
www.developers-guide.net
supertramp ist offline   Mit Zitat antworten
Alt 11.08.2004, 09:10  
Gast
 
Beiträge: n/a
Standard

Ich habe die Abfrage eins zu eins aus dem Beitrag von Andreas in Mysql-Front kopiert:

Code:
1: SELECT * FROM artcol
2: WHERE color_id NOT IN (
3: SELECT color_id FROM p_farben
4: );
Die Tabellen Struktur (aus Mysql-Front):

Code:
#
# Table structure for table artcol
#

CREATE TABLE `artcol` (
  `color_id` int(6) unsigned NOT NULL auto_increment,
  PRIMARY KEY  (`color_id`)
) TYPE=MyISAM;


#
# Table structure for table artikel
#

CREATE TABLE `artikel` (
  `Id` int(6) unsigned NOT NULL auto_increment,
  `color_id` tinyint(4) default NULL,
  PRIMARY KEY  (`Id`)
) TYPE=MyISAM;
Zusätzlich im o.g. Fehlertext wird noch die Zeile

Zitat:
SQL Auführungsfehler 1064. Antwort der Datenbank:
<Fehlermeldung von oben>
ausgegeben.

Gruss epps_21
  Mit Zitat antworten
Alt 11.08.2004, 09:16  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Was hast du für eine MySQLO-Version? Falls < 4.1 gehen Subselects nicht. Andernfalls müssten beide Versionen funktionieren, auch wenn SELECT * schlecht ist, besonders in Subselects.
http://www.phpfriend.de/ftopic20484.html
Sonst könnte die folgende Version dein Problem lösen:
Code:
SELECT feld1, feld2, ... 
    FROM artcol a
    LEFT JOIN artikel b on a.color_id = b.color_id
    WHERE ISNULL(b.color_id);
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 11.08.2004, 09:23  
Gast
 
Beiträge: n/a
Standard

Hallo, danke an alle für die Hilfe. Gerade habe ich festgestellt, dass diese Abfragen nicht in der V4.0.20 unterstützt werden. Da habe ich wohl in der falschen Dokugeschaut.

Ja,ja, ich weiss, "wer lesen kann ist klar im Vorteil" :wink: , danke für den Tip @lazydog, ich denke das löst mein Problem.

Gruss epps_21
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP richtig lernen! TeazY PHP Tipps 2008 5 01.02.2008 21:50
EXISTS Abfragre tut unter Mysql 5.0 aber nicht unter 4.x snuggl3s Datenbanken 6 26.04.2006 12:21
[Erledigt] Modularisierung: Wie macht man es richtig? PHP-Fortgeschrittene 1 12.03.2006 16:00
[Erledigt] Hoffe das ich Hier richtig bin Datenbanken 2 31.01.2006 10:48
[Erledigt] Lieg ich da richtig? Datenbanken 4 31.08.2005 13:21
[Erledigt] VARIABLEN WERDEN NICHT RICHTIG VERARBEITET!!!! HILFE PHP Tipps 2005-2 6 02.07.2005 18:32
PHP funktioniert nicht richtig?! PHP Tipps 2005-2 26 11.06.2005 09:05
Variable wird nicht richtig übergeben PHP Tipps 2005 17 16.01.2005 16:51
Subquery kurios..wie gehts richtig? PHP Tipps 2005 4 04.01.2005 20:24
Tabelle wird im IE nicht richtig angezeigt fantast HTML, Usability und Barrierefreiheit 3 07.11.2004 13:05
[Erledigt] imap_body RICHTIG ausgeben (mit allen Sonderzeichen usw.) PHP-Fortgeschrittene 3 08.09.2004 02:33
[Erledigt] Perl richtig installiert oder falsch ? testen aber wie ? c01001 Server, Hosting und Workstations 2 31.08.2004 22:37
Formular, welches prüft, ob eingegebene Antwort richtig.... PHP Tipps 2004 10 15.08.2004 22:18
php funktioniert nicht richtig PHP Tipps 2004 3 14.06.2004 08:04
Newsscript sortiert nicht so richtig PHP Tipps 2004 20 07.06.2004 18:21

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
select not exists, select where not exists, sql not in not exists, sql not exists, not exists, not in not exists, php not in, not exists sql, not exists not in, sql not exists not in, informix not exists, php \not in\, informix exists, sql \not in\ \not exists\, \not in\ \not exists\, select not in sql, sql not exists in, sql exists, where not exists sql, sql not in oder not exists

Alle Zeitangaben in WEZ +1. Es ist jetzt 12:17 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.