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

255
11 мая 2017, 13:48

Здравствуйте!
у меня есть три таблицы!

news

id|title|text|test|qwer|trrr 
1|test name|description|wer234|qqq  
2|test nam2|description|wer234|qqq  
3|test na3|description|wer234|qqq  
4|test n4|description|wer234|qqq  
5|test 5|description|wer234|qqq

type

id|type
1|type1  
2|type2  
3|type3  
4|type4  
5|type5

newsandtyp

 news_id|type_id  
  1|2   
  1|5   
  1|1  
  2|3   
  2|4    
  5|5  
  5|2  
  5|3

таблица newsandtype это связь многие-ко-многим, связь news и type так вот, как мне правильно сделать выборку записей из таблицы news учитывая таблицу type? Например хочу вывести:

1 test name description type2,type5,type1 wer234  
2 test nam2 description type3,type4 wer234  
5 test 5 description type5,type2,type3 wer234 

вывести данные таблицы news + данные таблицы type только если есть связи в таблице newsandtype

Answer 1

Вам потребуется построить запрос с использованием JOIN, схема запроса указана ниже на рис.1:

Для этого выполним операцию пересечения INNER JOIN. Вывод записей из таблицы news будет зависить от таблицы newsrandtype, а сама таблица newsrandtype будет пересекаться с таблицей type. Зеленая зона на схеме обозначает операцию INNER JOIN.

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

SELECT `news`.*,
       `type`.*
FROM `news`
JOIN `newsandtype` ON `newsandtype`.news_id = `news`.id
JOIN `type` ON `type`.id = `newsandtype`.type_id;

В другом случае, можно сделать группировку и вывести типы через запятую в поле types:

SELECT `news`.*,
       GROUP_CONCAT(`type`.`type`) types
FROM `news`
JOIN `newsandtype` ON `newsandtype`.news_id = `news`.id
JOIN `type` ON `type`.id = `newsandtype`.type_id
GROUP BY `news`.id;
READ ALSO
Парсинг вкладки Network в панеле разработчика (F12)

Парсинг вкладки Network в панеле разработчика (F12)

ЗдравствуйтеКак написать PHP-скрипт, который будет "заходить" в панель, переходить в Network, брать ссылку и парсить ее?

264
Помогите осознать

Помогите осознать

Есть такая задача:

167
Ошибка: error writing to -: Invalid argument }

Ошибка: error writing to -: Invalid argument }

Ошибку выдает в main, без понятия что это может быть Код мэйна:

826