# SQL NOT IN Befehl



## DiDiJo (30. Oktober 2008)

hey leute,

ich hab eine Tabelle xyz mit folgendem Aufbau (auszugsweise):

kid (INT) (auto_increment)
skid (INT) 
name (varchar)
uid(INT)
vid(INT)

mit Inhalt gefüllt sieht das Ganze dann so aus:

kid   |   skid   |   name   |   uid    |    vid
--------------------------------------------------------
1     |   1        |   name1 |   1      |    1
2     |   1        |   name1 |   1      |    24
3     |   2        |   name2 |   1      |    1
4     |   2        |   name2 |   1      |    24

ich möchte nun alle skid und namen bekommen bei denen die vid beispielsweise != 7 und die uid = 1 ist. ist die vid 1 oder 24 dann sollte natürlich ein leeres ergebnis geliefert werden mein ansatz sieht so aus 

```
SELECT DISTINCT(name),skid 
WHERE uid='$_SESSION[uid]' AND vid NOT IN 
(SELECT vid FROM kurse WHERE vid != 7 and uid='$_SESSION[uid]') group by name,skid
```

das ist übrigens immer der Fehler (egal wie ich meinen sql Befehl gedreht habe)

#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 uid='1' AND vid NOT IN
(SELECT vid FROM kurse WHERE vid


----------



## deepthroat (30. Oktober 2008)

Hi.

Du mußt schon die Tabelle angeben von der die Datensätze kommen sollen. Die Syntax ist

```
select <cols> from <table> where <cond>
```
Gruß


----------



## DiDiJo (30. Oktober 2008)

upala ... da war ich beim thread schreiben wohl etwas verplant ... in meinem script steht das from natürlich


hier nochmal das update

```
SELECT DISTINCT(name),skid FROM kurse
      WHERE uid='1' AND vid NOT IN
      (SELECT vid FROM kurse WHERE vid != 7 AND uid='1') GROUP BY name,skid
```


----------



## deepthroat (30. Oktober 2008)

Aha. Dann würde ich das DISTINCT nicht als Funktion schreiben:

```
select distinct name, skid from ...
```
Gruß


----------



## DiDiJo (30. Oktober 2008)

jaaaaaaaa das macht sinn  ... leider is das ergebnis immernoch das gleiche


----------



## deepthroat (30. Oktober 2008)

Kann ich nicht nachvollziehen. Gib dir mal den Befehl direkt aus und poste hier per Copy'n'Paste wie der Befehl genau aussieht.

Gruß


----------



## DiDiJo (12. November 2008)

sooo sry fürs nix tun von meiner Seite. ich war ähhhh verhindert 


```
SELECT DISTINCT name,skid FROM videos WHERE uid='1' AND vid NOT IN (SELECT vid FROM kurse WHERE vid!='24' AND uid='1' ) group by name,skid
```


----------



## deepthroat (12. November 2008)

Das kann nicht der richtige Befehl sein, da fehlt das from.

Gruß

\edit: Aha. Jetzt hast du's editiert, aber das ist ja dann auch nicht wirklich der Befehl der dort ausgeführt wird, sonst hättest du ihn ja kopieren können. Lass dir den Befehl auf der Webseite (ist doch PHP oder?) ausgeben und poste ihn dann hier mittels Copy'n'Paste rein. Alles andere macht keinen Sinn, da du anscheinend zu verpeilt bist.


----------



## Navy (12. November 2008)

nimm das "distinct" raus und füge ein "group by name" am Ende ein


----------



## DiDiJo (12. November 2008)

das is genau mein befehl


----------

