Мне нужна помощь в построении запроса и объединении результатов в одну строку, вот таблицы:
tbl_contacts
id | name | lastname | email
1 | daniel1| lastname1 | [email protected]
2 | daniel2| lastname2 | [email protected]
tbl_contacts_var
cid | name | value|
1 | VAR1 | d1 |
1 | VAR2 | d2 |
1 | VAR3 | d3 |
Я попробовал следующий запрос, который является ближайшим желаемым результатом, который я мог бы получить, но мне он нужен по-другому, вот что я пробовал:
SELECT tbl_contacts.*,
( SELECT GROUP_CONCAT(value SEPARATOR ',')
FROM tbl_contacts_var WHERE
tbl_contacts.id = tbl_contacts_var.cid )
as attributes
FROM tbl_contacts WHERE tbl_contacts.id = 1
И это результат
id | name | lastname | email |attributes
1 | daniel1| lastname1 | [email protected]|d1,d2,d3
Однако результат, который я ищу, больше похож на следующий:
id | name | lastname | email | VAR1 | VAR2 | VAR3 |
1 | daniel1| lastname1 | [email protected]| d1 | d2 | d3 |
Я попытался с JOIN, но он возвращает три строки, и мне нужен полный результат в одной строке, также мне нужно использовать значение "имя" во второй таблице в качестве имени столбца для результата, возможно ли это?
Буду признателен за любую помощь, спасибо!
Вы можете попробовать выполнить запрос ниже
SELECT c.name, c.name, c.lastname, c.email
, MAX(
CASE cv.name
WHEN 'VAR1' THEN cv.VALUE
ELSE NULL
END
) AS VAR1
, MAX(
CASE cv.name
WHEN 'VAR2' THEN cv.VALUE
ELSE NULL
END
) AS VAR2
, MAX(
CASE cv.name
WHEN 'VAR3' THEN cv.VALUE
ELSE NULL
END
) AS VAR3
FROM tbl_contacts c
JOIN tbl_contacts_var cv ON cv.cid = c.id
GROUP BY c.name, c.name, c.lastname, c.email