У меня есть несколько таблиц MySQL, таких как:
ids urns urn_urls urls
id | type id | uid | urn uid | lid lid | url
---+----- ---+-----+----- ----+---- ----+----
1 | 1 1 | 1 | urn1 1 | 1 1 | url1
2 | 4 2 | 2 | urn2 1 | 2 2 | url2
3 | 4 2 | 3 | urn3 2 | 3 3 | url3
4 | 4 3 | 4 | urn4 2 | 4 4 | url4
...|... 3 | 5 | urn5 3 | 4 5 | url5
. 4 | 6 | urn6 4 | 5 6 | url6
. ...| ... | ... 5 | 5 ...| ...
. 6 | 1
. 6 | 6
Я хотел бы получить запрос, в котором перечислены те записи идентификатора типа 4, которые связаны с несколькими урнами исопоставляя урны, например:
result
id | url
---+-----
2 | url3
2 | url4
4 | url1
4 | url6
я уже пробовал что-то вроде этого:
SELECT id,url
FROM ids
NATURAL JOIN urns
NATURAL JOIN urn_urls
NATURAL JOIN urls
WHERE type=4
HAVING count( #column# )>1;
с #column#
одним из (id
, lid
, url
), но возвращается только в строке;когда я добавил оператор GROUP BY
, я получил больше, но не подходящих результатов для
SELECT id,url
FROM ids
NATURAL JOIN urns
NATURAL JOIN urn_urls
NATURAL JOIN urls
WHERE type=4
GROUP BY #group#
HAVING count( #column# )>1;
для различных комбинаций #group#
/ #column#
из (id
, lid
, url
).
Итак, помощь приветствуется.