Выберите сгруппированную таблицу из 3 таблиц

#php #mysql #sql #join

#php #mysql #sql #Присоединиться

Вопрос:

У меня есть 3 таблицы в MySQL.

excel — это таблица, в которой я храню название сайта, а side-id analys_result — это таблица, в которой я храню ключевые слова сайтов, в ней есть ключевое слово, идентификатор категории, идентификатор сайта. категории — содержат имя и идентификатор категории

Вот скриншоты таблиц и то, что мне нужно получить:

Таблица Excel введите описание изображения здесь

таблица результатов анализа
введите описание изображения здесьКатегория

Результат введите описание изображения здесь

Комментарии:

1. вы не опубликовали categories таблицу. вероятно, проще выполнить форматирование в php

2. В чем вопрос?

3. Я добавляю таблицу категорий, мне нужно выбрать данные в формате последнего изображения, я пробую объединения, группирование по, вложенные запросы, но это не помогло

Ответ №1:

Используя только sql, лучшее, что вы можете получить, это:

 select e.id, e.url, c.CategoryName, a.Keywords, count=sum(a.count)
from excel e, categories c, analys_results a
where e.id = a.websiteid
and a.categoryid = c.id
group by e.id, e.url, c.CategoryName, a.keywords
order by e.id, e.url, c.CategoryName, a.keywords
  

Это даст вам правильные данные, но поля группировки (id, url, categoryname) будут отображаться в каждой строке результирующего набора (не ОДИН РАЗ для каждой группы), и выполнение запроса таким образом с использованием сложного SQL НЕ рекомендуется. Пусть база данных предоставит вам данные, и пусть пользовательский интерфейс или инструмент отчетности, который вы используете, определяют, как вы хотите отобразить результаты.