MySQL: получить данные таблицы, но присоединиться к другой таблице, если идентификатор

Мои таблицы

pets
pet_lost

Дайте мне все pets, pet_lost pet_lost.pet_id = pets.id where user_id = 1..., но также включают pet_lost данные, если pet_lost.pet_id = pets.id

Я всегда хочу приводить pets where user_id = 1, но я хочу получить доступ к данным pet_lost если есть соединение...

Имеют смысл?

2 ответа

Вы можете перевести это в запрос, используя left outer join и соответствующее предложение where:

select *
from pets p left outer join
 pet_lost pl
 on pl.pet_id = p.id
where p.user_id = 1 or pl.pet_id is not null;

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

Вы можете сформулировать это как:

select p.*
from pets p
where p.user_id = 1 or
 p.id in (select pl.pet_id from pet_lost);


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

Но если вы собираетесь хранить свои таблицы так, как они есть, вы будете использовать запрос "Союз", чтобы объединить две таблицы.

Имейте в виду, что в домашнем животном не может быть потерян идентификатор домашнего животного.

Я бы порекомендовал бинарное поле на столе для домашних животных и удалил потерянный стол для домашних животных.

licensed under cc by-sa 3.0 with attribution.