webForumDet fria alternativet

Problem med NOT EXISTS

2 svar · 219 visningar · startad av Del Pero

Del PeroMedlem sedan feb. 20001 797 inlägg
#1

Såhär ser min tabellstruktur ut (MySQL 4.0.18-standard):

album
--
id  |  namn

content
--
id  | album_id  |  bild_id

När man redigerar informationen om en bild vill jag kunna presentera en dropdown som innehåller alla album där den specifika bilden inte finns representerad.

Jag försöker hämta resultatet med den här SQL-koden, men får det inte att fungera.

$sql = "SELECT a.albumID, a.albumName FROM t_album AS a WHERE NOT EXISTS ( SELECT * FROM t_album_content AS c WHERE a.albumID = c.conAlbum AND c.conImage = ".addslashes($_GET['i_id']).")";

Felmeddelandet skrev:

Notice: Query failed: 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 t_album_content AS c WHERE a.albumID = c SQL: SELECT a.albumID, a.albumName FROM t_album AS a WHERE NOT EXISTS ( SELECT * FROM t_album_content AS c WHERE a.albumID = c.conAlbum AND c.conImage = 7)

Jag har letat runt lite i dokumentationen men det har inte gjort mig mycket klokare...
Hur löser jag detta? :)

@ndersMedlem sedan juni 200026 914 inlägg
#2

Om jag inte missminner mig måste du använda MySQL 4.1 eller senare för att kunna köra subqueries på det sätt du vill. Du får nog göra det med en join istället:

$sql = "SELECT a.albumID, a.albumName FROM t_album AS a LEFT JOIN t_album_content AS c on a.albumID = c.conAlbum AND c.conImage = ".addslashes($_GET['i_id'])." WHERE c.conAlbum IS NULL";

Lite krångel har jag med WHERE och AND i joiner, men det är någonstans att starta i alla fall, även om det inte är helt perfekt.

Mvh

Del PeroMedlem sedan feb. 20001 797 inlägg
#3

Världsklass på inlägget ovan!

369 ms totalt · 5 externa anrop · cache AV · v20260730165559-full.0b955084
0 ms — hämta statistik (cache)
117 ms — slå upp tråd (db)
0 ms — hämta forumlista (cache)
127 ms — hämta inlägg (db)
122 ms — hämta bilagor (db)