Du skal jo sige hvad det er der er "NOT IN"... er det et ID jamen så SELECT * FROM billede_tabel WHERE item_id NOT IN (SELECT * FROM map_tabel WHERE item_id = $_GET["item_id"])
ved egentlig ikke om IN virker på den måde.. men du skal selvfølgelig også kun udvælge det id der sammenlignes på SELECT * FROM billede_tabel WHERE item_id NOT IN (SELECT item_id FROM map_tabel WHERE item_id = $_GET["item_id"])
nielle >> ja selvfølgelig..lol.. det var blot for at tage et navn på et id..men ja..lige netop præcis det eeene navn...der går den nok ikke så skide godt nej ;o)
Hmm... Er først ved min computer nu... Har lige prøvet at skrive sql'en sådan her:
SELECT * FROM billede_tabel p WHERE p.pic_id NOT IN (SELECT * FROM map_tabel WHERE item_id = 3) ORDER BY p.pic_id ASC
Men det virker stadigvæk ikke... Den kommer med mysql_error() = 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 * FROM map_tabel WHERE item_id = 3)
hrm.. det er ikke fordi der skal ' omkring id.. altså '$_GET["item_id"]' Ellers kunne det tyde på som vi var inde på at du skal selecte et id og ikke alt IN opererer normalt på en tupel, altså fx Select * From tabel Where id Not In (2,3,4) Hvis du vælger * så kunne dit eksempel måske give Select * From billede_tabel Where pic_id Not In (2,brian,kbh,4,benny,århus) -- Så prøv udskifte stjernen så du kun får de ID du ikke er interesseret i FX SELECT * FROM billede_tabel p WHERE p.pic_id NOT IN (SELECT item_id FROM map_tabel) ORDER BY p.pic_id ASC -- I øvrigt så er din sql ikke så spændende hvis du sammenligner på id og du kun hiver item_id = 3 ud. Så kunne du ligeså godt sige SELECT * FROM billede_tabel p WHERE p.pic_id NOT IN (3) ORDER BY p.pic_id ASC Som igen er det samme som SELECT * FROM billede_tabel p WHERE p.pic_id <> 3 ORDER BY p.pic_id ASC
Når jeg siger item_id = 3 så kommer der en masse billeder ud. Det er fordi at i billede_tabel er der en masse billede, som så bileder sat sammen med nogle items i map_tabellen, så vil sige at ved item_id = 3 kan det være at billede 3,5,8 dukker op, så de 3 billeder vil jeg gerne have fjernet fra den select som viser de billeder som du kan tilføje.
Jeg synes ikke det er fedt hvis man kan tilføje det samme billede flere gange...
Nu er jeg ikke helt up-to-date mht. MySQL, men det er ikke mange versioner siden at den ikke understøttede sub-selects. Måske er det det som er i vejen. Ved du hvilken version du bruger?
SELECT * FROM billede_tabel WHERE pic_id NOT IN ('SELECT pic_id FROM map_tabel WHERE item_id = 3') og den melder ikke fejl længere, men den fjerner heller ikke noget ....
Der skal i hvert fald ikke være pinger rundt om den indre SELECT-sætning - ellers bliver den under alle omstændigheder behandlet som et stykke tekst i stedet for som en SQL-kommando.
LOL. Ja, man kan jo altid få alle fejl til at forsvinde, hvis man f.eks. udkommentere alt sin kode. Men det er sjældent den rigtige løsning. ;^)
Det lader unægtelig til at du må gøre det over 2 SQL'er. Først en loop over den "ydere SQL" hvor du laver et array og til dette tilføjer de mulige pic_id'er. Derefter en loop over den "indre SQL" hvor du fratrækker de pic_id'er som allerede er brugt.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.