Выбор значений из другой таблицы - PullRequest
0 голосов
/ 20 августа 2011

Итак, у меня есть две отдельные таблицы. В первой таблице есть несколько групп объявлений с идентификатором. Во второй таблице куча объявлений, у которых есть столбец, содержащий идентификатор ad_group для каждого объявления. Ad_group_id - это просто идентификатор группы объявлений из таблицы групп объявлений. Поэтому я пытаюсь выбрать все объявления, у которых ad_group_id равен 103, 104, 105, 107, 11717 и 120.

Итак, я попробовал следующий запрос.

SELECT * FROM ads WHERE ad_group_id LIKE '%103%' OR ad_group_id LIKE '%104%'
OR ad_group_id LIKE '%105%' OR ad_group_id LIKE '%107%' OR ad_group_id LIKE '%117%' OR ad_group_id LIKE '%118%' OR ad_group_id LIKE '%120%';

Так сработал предыдущий запрос? ДА

Был ли мой запрос эффективен? НЕТ!

Мне интересно, как я могу выполнить предыдущий запрос MySQL более эффективным способом.

EDIT:

AD GROUP - table 1
id    name
100   Tony
100   David
103   James
104   Ann
105   Jon
150   Sara

AD - table 2
keyword   ad_group_id
that        103
one         100
is          105
special     104
no          100
please      103

Так что я должен в итоге:

that        103
is          105
special     104
please      103

Надеюсь, что это имеет смысл.

РЕДАКТИРОВАТЬ 2:

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

SELECT * FROM ads WHERE ad_group_id IN (103,104,105,107,117,118,120);

1 Ответ

1 голос
/ 20 августа 2011

Как я понимаю, вы храните ad_group_id как id1, id2, id3 и так далее.Если да, это отношение «многие ко многим» и более эффективно для создания дополнительной таблицы с 2 столбцами ad_id, ad_group_id.Но это зависит от количества ваших данных.

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