Что я пытаюсь сделать, чтобы все пользователи, у которых нет значения, установленного для fid = 13 или вообще не имеют значения в profile_values. Я предполагаю, что это простое решение, но я просто этого не вижу. Любая помощь или точка в правильном направлении приветствуются.MySQL Query - помощь с выбором
(В таблицах пользователей и profile_values оба из Drupal.)
Упрощенные значения:
uid name fid value
1 user1 1 foo
1 user1 2 foo
2 user2 12
2 user2 13 1265662514
3 user3 NULL NULL
4 user4 NULL NULL
То, что я пытался:
SELECT u.uid, u.name, pv.fid, pv.value
FROM users u
LEFT JOIN profile_values pv ON pv.uid = u.uid
WHERE u.status != 0
AND (pv.fid != 13 OR pv.fid IS NULL)
GROUP BY u.uid
uid name fid value
1 user1 1 foo
2 user2 12 foo
3 user3 NULL NULL
4 user4 NULL NULL
Моя проблема в том, user2, которая не должна если оно имеет значение в fid = 13
Спасибо за все невероятные быстрые и квалифицированные ответы, приветствия!
это не сработает. взгляните на мой и обсуждение Энтони ниже – zerkms
Собственно, это похоже на работу в сочетании с OR (pv.fid = 13 AND pv.value = '') ... если я не замечаю что-то – Borgenk
@Borgenk: почему бы и нет? ;-) Вы пробовали посмотреть это предложение EXPLAIN? ;-) – zerkms