Проблема проектирования: получение большего количества данных для некоторых записей, которые я получаю в запросе SQL - PullRequest
1 голос
/ 16 июля 2009

Скажем, у меня есть запрос, который выбирает [type] [show_name].
Для всех записей [type] == 5 мне нужно объединить их с другой таблицей.

Каков наилучший подход для этого:

  1. Объединить все записи между двумя таблицами (выглядит плохо).
  2. Запустите запрос, а затем снова запустите набор результатов, извлеките все идентификаторы и выполните запрос IN для таблицы, к которой нужно присоединиться.
  3. Получать недостающие данные только после того, что у меня есть (используя тот же запрос IN), возможно, с помощью AJAX-подхода.
  4. Что-то, о чем я не думал.

Важно то, что я хочу, чтобы пользователь видел по крайней мере некоторые данные как можно быстрее, но я также хочу, чтобы код был прямым, без лишних спагетти.

1 Ответ

2 голосов
/ 16 июля 2009

Вы можете сделать left join и поместить условие type=5 в условие соединения. Это вернет вам null в другой таблице, если type не 5.

select
    a.type,
    a.show_name,
    b.whatever
from
    tableA a
    left outer join tableB b on
        a.id = b.id
        and a.type = 5

Это работает, потому что он объединяет записи только с type=5. Если бы вы поместили a.type=5 внутри предложения where, это ограничило бы ваш набор результатов теми, где type=5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...