Moin! Ich versuche mich langsam an MySQL Syntax ranzuwagen, nachdem ich sonst immer alles durch PHP gesiebt habe ... Da entstehen natürlich Probleme ... Ich versuche zu erklären ...
Ich hab zwei Tables:
Code:
CREATE TABLE `Exhibitions` (
`id` int(11) NOT NULL auto_increment,
`Name` varchar(100) collate latin1_general_ci NOT NULL default '',
`Location` int(11) NOT NULL default '0',
`Start` date NOT NULL default '0000-00-00',
`Ende` date NOT NULL default '0000-00-00',
Code:
CREATE TABLE `Shows` (
`id` int(11) NOT NULL auto_increment,
`Artist_ID` int(11) NOT NULL default '0',
`Exhibition_ID` int(11) NOT NULL default '0',
(es geht um Ausstellungen und denen darin ausstellenden Künstlern, es können auch mehrere Künstler pro Ausstellung sein, deshalb die Zuordnungstabelle)
Ich möchte jetzt die Ausstellungen herausfiltern, in denen NUR Künstler XY ($art_id) ausstellt. Bisher habe ich das so gelöst:
Code:
SELECT Exhibitions.id AS ex_id,
Start,
Ende,
Location,
Name FROM Exhibitions
INNER JOIN Shows ON
(Shows.Exhibition_ID = Exhibitions.id
AND Shows.Artist_ID = '$artist_id')
WHERE Exhibitions.id
NOT IN
(SELECT Exhibition_ID
FROM Shows
WHERE Artist_ID != '$artist_id')
Da die Datenbank sehr gross ist, wird mir schmerzlich bewusst, dass der Code nicht sonderlich effizient ist. Ich denke mit verschachtelten JOIN wirds schneller gehen, aber leider bin ich dafür zu neu auf dem Gebiet.
Ich würde mich über Tipps sehr freuen!
Danke,
thomas