AsviS
@AsviS
начинающий

Как правильно сделать выборку из MySQL БД?

Есть основная таблица, в ней 6911 записей
написал такой SQL запрос:
select a.id as id, a.added_date, a.updated_date, a.codename, a.title, a.tech_title, a.category, f.name as family, d.name as developer, a.os, a.domain, a.FULL_URL, a.publicly_called, a.has_image, a.Available_for_PPC, a.PPC_Risk, a.Is_in_blogs, a.Publish_in_Blog, a.Publish_in_Feed, a.IS_IN_SOFT, a.Has_Tech_Info, u.nick as assigned_to, s.name as status, a.domain_popularity, a.adwords_activity, a.lp, a.seo, a.partners, a.Software_Scan, a.Software_Fix, a.tickets, a.Youtube_URL, a.SEVERITY, a.Image_URL
from artpost_table as a
join developer as d on a.developer = d.id
join family as f on a.family = f.id
join users as u on a.assigned_to = u.id
join status as s on a.status = s.id

в таблице artpost_table колонки:
developer ссылается на таблицу developer на колонку id
family ссылается на таблицу family на колонку id
assigned_to ссылается на таблицу users на колонку id
status ссылается на таблицу status на колонку id

так вот, этим запросом я получаю только 349 записей! Внимание вопрос:
Почему я получаю 349 записей а не 6911 ??
если делаю запрос
SELECT * FROM `artpost_table` WHERE 1
то получаю все 6911 записей, при этом вместо названий в колонках developer, family, assigned_to, status получаю только id (айдишники имен)
Помогите пожалуйста!
UPD:
Спасибо LEFT JOIN помог!
ещё вопрос:
если у меня в этой же таблице в колонке category есть записи: 1,3,6,89,10
Вот эти цифры отвечают за айдишники таблицы Category, как мне вместо айдишников вывести имена одним запросом??
f013b2fe01e04456a54d816204455790.png
сделал так:
SELECT a.id as id, a.added_date, a.updated_date, a.codename, a.title, a.tech_title, c.name as category, f.name as family, d.name as developer, a.os, a.domain, a.FULL_URL, a.publicly_called, a.has_image, a.Available_for_PPC, a.PPC_Risk, a.Is_in_blogs, a.Publish_in_Blog, a.Publish_in_Feed, a.IS_IN_SOFT, a.Has_Tech_Info, u.nick as assigned_to, s.name as status, a.domain_popularity, a.adwords_activity, a.lp, a.seo, a.partners, a.Software_Scan, a.Software_Fix, a.tickets, a.Youtube_URL, a.SEVERITY, a.Image_URL
FROM artpost_table as a
LEFT JOIN developer as d on a.developer = d.id
LEFT JOIN family as f on a.family = f.id
LEFT JOIN users as u on a.assigned_to = u.id
LEFT JOIN status as s on a.status = s.id
LEFT JOIN category as c on a.category = c.id

вывело такое:
1a8bc8c40b4b4e6885266e4026ec523b.png
как я понимаю использовало только первый айди в списке, а мне нужно что бы вместо айди было название типа так: 1,3,4,2 -> cat1,cat3,cat4,cat2
UPD2:
всем спасибо =) решил свой последний вопрос с помощью find_in_set()
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
denman1985
@denman1985
SQL, Oracle Forms/Reports dbd
Вместо JOIN пропиши LEFT JOIN и будут все записи.
Не все поля заполнены/имеют соответствие в других таблицах. Поэтому показываются только записи с полным соответствиям, коих 349.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы