Existem 2 tabelas principais: drivers
e driver_riders
que são conectadas por uma chave estrangeira. Todos os dias, alguns dos motoristas fazem uma ou várias viagens.
Há também uma mesadriver_rewards
driver_rewards
---
ride_id
reward_percent
reward_amount
Um trabalho cron faria a varredura rides
a cada duas horas, selecionaria status = success
passeios e inseriria um registro de recompensa em driver_rewards
. Mas apenas os passeios que ainda não foram inseridos - não houve nenhum registro ride_id = ?
até driver_rewards
agora.
Como criar corretamente a consulta SQL que selecionaria tal rides
? Eu estou ciente LEFT JOIN
e NOT EXISTS
mas como eu os usaria aqui?
Bem, você pode usar uma junção externa como
LEFT JOIN
aqui ou,NOT EXISTS
mas não precisa de ambos. Prefiro junções externas porque elas parecem mais relacionais para mim. Veja como você pode atingir seus objetivos com um:Observe que você deve:
Sempre marque qual sistema de banco de dados e versão você está usando, pois as respostas para sua pergunta podem variar lógica ou sintaticamente, dependendo dessas coisas.
Sempre forneça as definições completas de todas as tabelas envolvidas. Tive que adivinhar os nomes das suas colunas na
rides
tabela.