ответ от Апельсины по теме "application asks for the PRIMARY KEY".
http://dev.mysql.com/doc/refman/5.1/en/innodb-index-types.html
http://dev.mysql.com/doc/refman/5.1/en/innodb-index-types.html
не понимаю я эти джоины (((( можете обьяснить на этом примере что сдесь происходит?Автор оригинала: O1&g
Попробуй это
PHP:SELECT country.name FROM country INNER JOIN country_birds ON country.id = country_birds.countryId INNER JOIN birds ON birds.Id = country_birds.birdsId WHERE country.id = {твоя страна}
а, это элементарно) происходит декартово произведение трёх множеств, после чего лишние кортежи отсеиваются)Автор оригинала: FRIE
не понимаю я эти джоины ((((
Автор оригинала: FRIE
не понимаю я эти джоины (((( можете обьяснить на этом примере что сдесь происходит?
SELECT country.name
FROM country
INNER JOIN country_birds ON country.id = country_birds.countryId
INNER JOIN birds ON birds.Id = country_birds.birdsId
WHERE country.id = {твоя страна}
неправдаАвтор оригинала: pilot911
в общем случае, ON - это 100%й аналог WHERE, переименованный в ON для таблиц связей
почему?неправда
неправда :-Pа, это элементарно) происходит декартово произведение трёх множеств, после чего лишние кортежи отсеиваются)
я бы сказал, не совсем правда, но это не принципиально)Автор оригинала: zerkms
неправда :-P
перечитай его ещё раз. он говорил о том, что семантически ON для объединения схожа с WHERE при обычной выборке из 1ой таблицы.а то что ON это то же самое что и WHERE это бред, при переносе условия из ON в WHERE результат может отличаться
не, это ошибка - фильтровать по таблице связи, поскольку в таблице животных запись может быть скрыта, с флагом "удалено" ... соответственно, страна не покажется, в то время, как должнаАвтор оригинала: Adelf
SELECT country.name
FROM country
WHERE country.id NOT IN (SELECT countryId FROM country_birds)
Мне мой зпрос кажется более семантически верным, чтоли..
Хотя и юзается подзапрос.
Кстати пилот, твой запрос слишком сложен.
SELECT country.name
FROM country
LEFT JOIN country_birds ON country.id = country_birds.countryId
WHERE country_birds.birdsId = NULL
Вот такой чуток попроще![]()
Это не работает, да и не должно по-моему (возвращает 0 строк)Автор оригинала: Adelf
SELECT country.name
FROM country
WHERE country.id NOT IN (SELECT countryId FROM country_birds)
Мне мой зпрос кажется более семантически верным, чтоли..
Хотя и юзается подзапрос.
Вариант с пустыми значениями, знаю но он работает со связями Один ко МногимАвтор оригинала: Adelf
Кстати пилот, твой запрос слишком сложен.
SELECT country.name
FROM country
LEFT JOIN country_birds ON country.id = country_birds.countryId
WHERE country_birds.birdsId = NULL
Вот такой чуток попроще![]()
Ну включи блин мозг. id медведя есть. NOT IN - вполне подойдет только пойми что это за оператор и подправь.Мне же нужно страны, в которых нет определенного животного (например: Медведя)