У меня есть этот запрос, который отлично работает. Нет ошибок или что-то еще. Но, похоже, он не работает с последней частью и не заполняет последние три поля из cd contact_data.SQL-запрос, не отображающий нужный результат
select c.*,cd.* FROM
(select * from
(select con.id_contact as v,substr(concat(ifnull(con.firstname,''),ifnull(con.lastname,'')),1,4) as s0, null as s1, null as s2
from contact con where id_user=123 and firstname != '' and firstname != ' ' and firstname is not null) as tbl235768 where 1=1 AND v IN
(select v from
(select * from
(select con.id_contact as v,substr(concat(ifnull(con.firstname,''),ifnull(con.lastname,'')),1,4) as s0, null as s1, null as s2
from contact con where id_user=123 and email = '') as tbl235770 where 1=1) as tblAnd) AND v IN
(select v from
(select * from (select con.id_contact as v,substr(concat(ifnull(con.firstname,''),ifnull(con.lastname,'')),1,4) as s0, null as s1, null as s2
from contact con where id_user=123 and mobile != '' and mobile != ' ' and mobile is not null) as tbl235772 where 1=1) as tblAnd)) as tblBucket
left join contact c on c.id_contact=v left join
(select id_contact, group_concat(name) as custom_names,group_concat(value) as custom_values FROM contact_data where
id_user=20 group by id_contact) as cd on cd.id_contact=c.id_contact group by (c.id_contact)
Но, если я запускать только последнюю часть, которая имеет следующий вид
select id_contact, group_concat(name) as custom_names,group_concat(value) as custom_values
FROM contact_data where id_user=798 group by id_contact
Это дает мне желаемого результата. что не так с моим запросом? Любая помощь будет очень признательна, спасибо.
Редактировать: я редактирую свой вопрос после получения нескольких ответов.
Я удалил все вложенные части, но все равно не повезло.
select c.*,cd.* FROM (select * from (select con.id_contact as v,substr(concat(ifnull(con.firstname,''),ifnull(con.lastname,'')),1,4) as s0, null as s1, null as s2 from contact con where id_user=10879) as tbl235785
where 1=1) as tblBucket left join contact c on c.id_contact=v left join (select id_contact, group_concat(name) as custom_names,group_concat(value) as custom_values
FROM contact_data where id_user=798 group by id_contact) as cd on cd.id_contact=c.id_contact group by (c.id_contact)
вложенные вложенные вложенные подзапросы .... – HaveNoDisplayName
Проверить, если вы используете правильный присоединиться функции: http://stackoverflow.com/questions/38549/difference-between-inner-and-outer-joins? –
Вы используете псевдоним V дважды. Плюс Вы выбираете одно поле, но на выбранный вами запрос *. Они могут быть очищены. – Chuck