У меня есть таблица команд и таблица игроков, и я хочу найти все команды, у которых нет игроков, связанных с ними. Таблица игроков ассоциируется с помощью столбца team_id
. Я использую Ruby on Rails для этого, поэтому у меня есть Team и Player.Поиск всех записей без связанных с ними
ответ
Он может работать лучше делать левое соединение:
SELECT
teams.*
FROM teams
LEFT JOIN players ON (teams.id = players.team_id)
WHERE
players.team_id IS NULL
Или с помощью AREL (благодаря комментарий JasonKing в):
Team.includes(:players).where('players.team_id IS NULL')
Отлично, и я тоже использую Rails (что-то, о чем я должен был упомянуть, Я думаю), так что это прекрасно связывается с синтаксисом: join и: conditions. –
Не нужно использовать SQL для соединения, это то, что 'includes()' делает. То есть. 'Team.includes (: players) .where ('players.team_id IS NULL')' – smathy
Последняя утонченность: 'Team.includes (: players) .where (: players => {: team_id => nil})' – smathy
Что-то вроде этого:
select * from teams
where id not in (select distinct team_id from players)
Недостаток с таким подходом: займет некоторое время, если у вас много записей игроков –
Вы бы сделать это с NOT EXISTS
условием, как так:
SELECT *
FROM teams
WHERE NOT EXISTS (SELECT 1 FROM players WHERE players.team_id = teams.team_id)
Вы должны вообще быть в состоянии сделать внешнее соединение от родителя к ребенку и проверки для нулевого значения в поле в дочернем элементе, который не имеет нулевого значения. Это обычно быстрее, чем «не в» или «не существует». Это может не работать во всех базах данных.
- 1. Rails - Поиск без связанных записей
- 2. Поиск всех записей, связанных с идентификатором клиента, является уникальным
- 3. Отображение связанных с ними объектов
- 4. CakePHP - Поиск записей не связанных записей
- 5. Ransack поиск всех записей
- 6. Как получить каждую из записей из Guava MultiMap и связанных с ними значений, связанных с ней?
- 7. Получение списка записей без связанных записей MySQL
- 8. Модули joomla отображаются на всех страницах, связанных с ними
- 9. PowerShell Список всех пользователей O365 и связанных с ними лицензий
- 10. Поиск максимального количества пользователей и связанных с ними сведений
- 11. Простая проблема с запросом MySQL - получение связанных записей, а также получение не связанных с ними
- 12. Поиск дубликатов строк и связанных записей
- 13. Использование Rails nested_form без связанных с ними моделей
- 14. Как получить объекты без связанных с ними объектов?
- 15. JPA сохраняется объект без связанных с ними лицами
- 16. Laravel 4 и Eloquent: получение всех записей и всех связанных записей
- 17. Поиск всех связанных таблиц в заданной таблице
- 18. Как сохранить объект без связанных записей
- 19. рельсы, как найти без связанных записей
- 20. Symfony 1.4: Поиск записей без соответствующих значений
- 21. Получите набор связанных записей из нескольких связанных записей laravel?
- 22. Организация контроллеров и связанных с ними диспетчеров
- 23. Реализация катенариев и связанных с ними кривых
- 24. Выбор всех таблиц без записей
- 25. Сохранение записей моделей и связанных с ними каталогов в синхронизации (с тестами)
- 26. запрос записей, имеющих связанные с ними изменения
- 27. Запрос MySQL для записей без определенных связанных записей
- 28. MarkLogic: Поиск связанных статей
- 29. Доступ Поиск всех записей в одной форме
- 30. Rails: Поиск всех связанных объектов с родительским объектом
Какой диалект SQL вы используете? –
В идеале это должно работать с MySQL, Postgres и Sqlite3 –