[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Объединение значений поля в объединенной табл.
vovan1409
Столкнулся с проблемой объединения гражданств человека в выборке(citizenship), если у него их два(по его id).
Все табл. на рисунке.
Группировать по peopleid не могу, т.к. основная задача поиск по фамилии(ensurname) или прозвищу(ennick) человека. Поэтому пришлось их запихать в один столбец с повторами.
Вот сам мой запрос:

SELECT u.peopleid, u.ensurname, u.ennick, u.citizenship
FROM(
(
SELECT p1.peopleid, p1.ensurname, n2.ennick, c1.enname as citizenship
FROM people p1, pnick n2, country c1, citizenship c2
WHERE p1.peopleid=n2.peopleid and p1.peopleid=c2.peopleid and c2.countryid=c1.countryid)
UNION
(SELECT p1.peopleid, p1.ensurname, p1.ensurname, c1.enname as citizenship
FROM people p1, pnick n2, country c1, citizenship c2
WHERE p1.peopleid!=n2.peopleid and p1.peopleid=c2.peopleid and c2.countryid=c1.countryid)
)
AS U


Должно получиться в строке Ostroverxov (Russia, Spain)
Желательно: гражданства в массиве!!! Но можно и в строчку, через запятую!!!
УЖЕ ДНЕЙ ПЯТЬ ГОЛОВУ ЛОМАЮ, ВЫРУЯАЙТЕ!!!
TranceIT
Я бы сделал примерно вот так:

SELECT table1.peopleid, table1.ensurname, table1.ennick, 
array_to_string(array(SELECT table2.citizenship
FROM curtable AS table2
WHERE table2.ensurname = table1.ensurname
AND table2.ennick = table1.ennick),', ') AS citizenship
FROM curtable AS table1


_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать.

Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.