MySQL SQL Subquery? - PullRequest
       2

MySQL SQL Subquery?

0 голосов
/ 10 сентября 2009

Учитывая следующую схему / данные / выходные данные, как мне отформатировать запрос SQL, чтобы получить результирующий вывод?

отчет CREATE TABLE (
id BIGINT AUTO_INCREMENT,
имя VARCHAR (255) НЕ NULL УНИКАЛЬНО,
исходный VARCHAR (255) НЕ NULL УНИКАЛЬНЫЙ,
ПЕРВИЧНЫЙ КЛЮЧ (id)
) ДВИГАТЕЛЬ = INNODB;

Поле CREATE TABLE (
id BIGINT AUTO _ INCREMENT,
имя VARCHAR (255) НЕ NULL УНИКАЛЬНО,
report_id BIGINT,
ПЕРВИЧНЫЙ КЛЮЧ (id)
) ДВИГАТЕЛЬ = INNODB;

ALTER TABLE подал ADD FOREIGN KEY (report_id) ССЫЛКИ отчет (id) ON DELETE CASCADE;

Отчеты:
идентификатор, имя, источник
1 отчет1 источник1
2 report2 source2
3 отчет3 источник3
4 отчет4 источник4

поле:
id, name, report_id
1 имя 3
2 фамилия 3
3 возраст 3
4 состояния 4
5 лет 4
6 ранг 4

Ожидаемый вывод для поискового запроса "age rank"
идентификатор_отчета, имя_отчета, num_fields_matched
3 report3 1
4 отчет4 2

Заранее спасибо!

1 Ответ

0 голосов
/ 10 сентября 2009

Этот запрос вернет все отчеты со словами, которые вам нужны.

SELECT *
FROM report r
INNER JOIN field f ON r.id = f.report_id
WHERE name IN ('age','rank')

Вы должны вложить это. Итак, последний запрос:

SELECT a.id, a.name, COUNT(*) 
FROM 
(
    SELECT r.id, r.name
    FROM report r
    INNER JOIN field f ON r.id = f.report_id
    WHERE f.name
    IN ('age', 'rank')
)a
GROUP BY a.id, a.name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...