Задать вопрос
@vasenka

Как составить запрос с join с условием выборки для второй таблицы?

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

Пример данных:

table1
|id|number|country|
|123|789-456-46|Mexico|
|654|65-741-697|England|

table2
|first_name|last_name|country|
|Helen|Fedorova|Russia|
|Marat|Saveliev|Mexico|


То есть нужно из второй таблицы забрать только тех юзеров, у которых country = Mexico. Понятно, что начало запроса будет выглядеть так:

select id.table1 as id, number.table1 as number, first_name.table2 as name,
last_name.table2 as surname from table1 join table2 on…


Собственно, как добавить условие выборки в условие объединения?
  • Вопрос задан
  • 96 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 2
irishmann
@irishmann
Научись пользоваться дебаггером
Примерно так

SELECT
    t1.id AS id,
    t1.number as number,
    t2.first_name as name,
    t2.last_name as surname
FROM
    table1 t1
    JOIN table2 t2 ON t1.country = t2.country
WHERE
    t1.country = 'Mexico'

Слово number надо будет заключить в кавычки. `number` для MySQL или "number" для PostgreSQL

UPD. Лучше пересмотреть структуру. Если в первой таблице, в поле country будут повторения, то в конечно результате будут дублирования. Может во второй таблице поле country сделать вторичным ключом (ссылка на id первой таблицы).
Ответ написан
VladimirAndreev
@VladimirAndreev
php web dev
select a.*, b.*
from a
join b on a.b_id=b.id
where b.whatever_id in(10,15,20)


в принципе, обычно можно даже так написать:
select a.*, b.*
from a
join b on a.b_id=b.id and b.whatever_id in(10,15,20)


более того, оптимизатором оно все, скорее всего, трансформируется в одно и тоже выражение)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы