Есть 2 таблицы.
Одна содержит фамилии авторов книг
CREATE TABLE `autor` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
Вторая содержит написанные ими произведения
CREATE TABLE `book` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_autor` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
Соответственно связаны таблицы через id_autor
Нужно сделать выборку из таблицы `autor` только тех авторов у которых 2 или более книг занесены в таблицу `book` и тех авторов чье книги вообще не упоминаются в таблице `book`?
Заранее всем спасибо!
1. kuteikin - 02 Февраля, 2012 - 16:57:55 - перейти к сообщению
2. Мелкий - 02 Февраля, 2012 - 17:35:00 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
скопировать код в буфер обмена
- SELECT autor.* FROM autor JOIN book ON autor.id=id_autor GROUP BY id_autor HAVING count(0)>=2
CODE (SQL):
скопировать код в буфер обмена
скопировать код в буфер обмена
- SELECT * FROM autor LEFT JOIN book ON autor.id=id_autor WHERE book.id IS NULL
PS: что будете делать с совместными произведениями нескольких авторов?