SQL LEFT JOIN & И ключевое слово

0

В настоящее время есть функция, которая использует следующий оператор SQL:

SELECT 'plans'.'concurrents' 
FROM 'plans' 
LEFT JOIN 'users' ON 'users'.'membership' = 'plans'.'ID' 
WHERE 'users'.'ID' = ?'

Я пытаюсь добавить в инструкцию SQL, чтобы она также добавляла значение в столбце "extra_concurrents" в таблице "users" к значению, которое возвращается из приведенного выше оператора SQL.

Я пробовал, но не повезло:

SELECT 'plans'.'concurrents' 
FROM 'plans' 
LEFT JOIN 'users' ON 'users'.'membership' AND 'users'.'extra_concurrents' = 'plans'.'ID' 
WHERE 'users'.'ID' = ?'

Мне нужно вернуть общую стоимость планов. Токи и пользователи добавлены вместе.

  • 3
    Можете ли вы привести пример того, как выглядит таблица
  • 0
    что требуется ?
Показать ещё 3 комментария
Теги:

4 ответа

1

Мне нужно что-то сказать о вашем запросе. left join совершенно ненужно. Ваше предложение where превращает его в внутреннее соединение.

Затем я рекомендую псевдонимы таблиц, чтобы упростить запрос. Остальное - дополнение:

SELECT p.concurrents + coalesce(u.extra_concurrents, 0)
FROM plans p JOIN
     users u
     ON u.membership = p.ID
WHERE u.ID = ?;

Также обратите внимание на coalesce(), на всякий случай, users.extra_concurrents столбец users.extra_concurrents равен NULL.

0

Когда вы присоединяетесь к таблицам, вы можете вызывать столбцы из другой таблицы

SELECT 'plans'.'concurrents','users'.'extra_concurrents'
FROM 'plans' 
LEFT JOIN 'users' ON 'users'.'membership' = 'plans'.'ID' 
WHERE 'users'.'ID' = ?'
0

Вам нужно будет использовать несколько соединений вместо "и". Не видя вашей структуры данных, трудно точно сказать, что вам нужно, но, вероятно, что-то вроде этого:

SELECT 'plans'.'concurrents' 
FROM 'plans' 'A'
LEFT JOIN 'users' 'B' ON 'B'.'membership' = 'A'.'ID'
INNER JOIN  'users' 'C' ON 'C'.'extra_concurrents' = 'A'.'ID' 
WHERE 'users'.'ID' = ?'
0
SELECT sum(('plans'.'concurrents')+('users'.'extra_concurrents'))
FROM 'plans' 
LEFT JOIN 'users' ON 'users'.'membership' = 'plans'.'ID' 
WHERE 'users'.'ID' = ?'

Примечание: его не очень удобно добавлять, когда условие находится на левой таблице.

Удачи

Ещё вопросы

Сообщество Overcoder
Наверх
Меню