2017-02-19 2 views
2

Ниже представлен запрос sql, который им используется для получения списка пользователей, у которых есть контактные данные. Похоже, что этот запрос работает нормально. Но единственная проблема заключается в том, что значение изображения всегда возвращает NULLполучение значения выбора из дополнительного запроса

Я попытался использовать дополнительный запрос для изображения ссылки на изображение. Все работает, за исключением ссылки на изображение.

SELECT a.id,a.name,a.address,a.image_id,(select url 
             from meta_details b 
             where b.p_id = 'a.image_id' 
             and b.meta_val='profile_pic') as image 
FROM users 
WHERE a.user_id NOT IN (SELECT user_id FROM details where contact_id != '$cid') 

Я не уверен, что это правильный способ, можно ли заставить его работать, чтобы получить URL-адрес изображения?

ответ

2

Вы должны удалить цитату вокруг a.image_id (в противном случае вместо условие объединения на поле у ​​вас есть объединение в буквальном значении 'a.image_id', который не потому, что не совпадают)

SELECT 
    a.id 
    ,a.name 
    ,a.address 
    ,a.image_id 
    ,(select url 
      from meta_details b 
      where b.p_id = a.image_id and b.meta_val='profile_pic') as image 
FROM users a 
WHERE a.user_id NOT IN (SELECT user_id FROM details where contact_id != '$cid') 
+0

а также определить псевдоним для пользователя таблицы ** ОТ пользователей a ** –

+0

@BerndBuffen. правильно. – scaisEdge

0

Этот тип запроса может также быть выражены с join операций:

select u.*, md.url as image 
from users u left join 
    meta_details md 
    on md.p_id = u.image_id and 
     md.meta_val = 'profile_pic' left join 
    details d 
    on d.user_id = u.user_id and d.contact_id <> '$cid' 
where d.user_id is null; 

преимущество этого подхода состоит в том, что SQL оптимизатор имеет возможность производить лучший план оптимизации. Кроме того, NOT IN опасен, потому что если любые строки из подзапроса возвращают NULL, тогда никакие строки не будут возвращены из запроса.

Смежные вопросы