у меня 3 таблицы; CASES
, USERS
и USER_META
. Для этой проблемы вам нужно знать, что таблица USER_META
имеет 3 столбца; user_id
, meta_key
и meta_value
Каждый пользователь связан со многими CASES
, а каждый USER
связан со многими USER_META
Мой текущий запрос похож на это
SELECT CASES.*, USERS.*, USER_META.*
FROM CASES
JOIN USERS ON USERS."user_id" = CASES."user_id"
JOIN USER_META ON USER_META_"user_id" = USERS."user_id"
Проблема этого подхода заключается в том, что у каждого пользователя USER_META LOT , поэтому в моем наборе результатов слишком много строк. Как я могу переписать этот запрос так, чтобы я мог выбрать только USER_META, где USER_META. "Meta_key" равен определенному значению , но все же получить результат, если у них еще нет этого USER_META. "Meta_key"
Например:
SELECT CASES.*, USERS.*, USER_META.*
FROM CASES
JOIN USERS ON USERS."user_id" = CASES."user_id"
JOIN USER_META ON USER_META_"user_id" = USERS."user_id"
WHERE USER_META."meta_key" = 'my_key'
Это будет прекрасно работать, но не все пользователи имеют значение "my_key" в столбце "meta_key", и нам все еще нужно просмотреть их CASE. Для пользователей, у которых нет «meta_key», результат должен просто возвращать столбцы CASE и USER.
Как мне переписать этот запрос, чтобы он получал результат для обоих пользователей с этим meta_key и без него?
Спасибо, надеюсь, это имеет смысл.