Nous faisons du travail professionnel pour une bonne cause et je m'emballe avec une requête. Le codage a été fait par de nombreux bénévoles au cours des années, ce qui a un résultat inévitable.Je ne veux pas faire la jointure Je veux
J'ai deux tables A et B. Ce que je dois est une somme de de score_hours sur une jointure entre les deux où les données est unique pour chaque instance de seulement A.
S'il vous plaît garder à l'esprit que les deux les tables sont assez grandes (10 à 50k + chacune selon le temps du mois).
Tableau A:
- id (pk, ai)
- uid (int)
- scores_date (horodatage (mais pour une raison que la date réelle, pas le temps))
- score_hours (décimal 3,1)
Tableau B:
- id (pk, ai)
- uid (int)
- shift_date (timestamp)
Il y a beaucoup de dossiers dans le tableau B qui ont le uid nous recherchons plusieurs dates (la les dates ne sont pas uniques). Le tableau A contient plusieurs enregistrements pour l'uid mais pour des jours différents. Donc, il pourrait avoir 1 uid par jour, mais pas 2 instances de 1 uid par jour.
Il y a évidemment plus de sélecteurs pour les deux tables, mais elles ne correspondent en aucun cas entre les tables (bien que je doive les interroger avec un simple "AND"), donc c'est ce que je dois travailler. Je dois les rejoindre à cause du reste de la requête, mais jusqu'à présent, je ne reçois pas les enregistrements dont j'ai besoin dans un temps décent. Mes tentatives ont été:
Cela a presque réussi. Mais le temps d'exécution était dégoûtant et a échoué avec quelques sélecteurs simples.
SELECT SUM(score_hours)
FROM A
WHERE
A.uid IN
(SELECT B.uid
FROM B
WHERE B.uid = "1")
Ceci donne la bonne sortie mais il en joint une pour chaque instance d'un uid. Normalement, vous pouvez résoudre cela en groupant, mais la somme comptera tout. Donc, ce n'est pas une option:
SELECT SUM(score_hours)
FROM A
LEFT JOIN B ON A.uid = B.uid
WHERE A.uid = "1"
* modifier: Non seulement je dois JOIN sur uid, mais il doit y avoir quelque chose comme ça en elle:
DISTINCT(date(m.shift_datum)) = DATE(d.dagscores_date)
Il est en fait très requête de base, à l'exception du fait qu'un SUM est nécessaire sur un enregistrement qui n'est pas unique en ce qui concerne la jointure Left et que j'ai besoin de JOIN sur deux tables en même temps.
Si vous avez besoin de plus de données s'il vous plaît dites-le moi. Je peux tout fournir.
Pourriez-vous ajouter des exemples de données et la sortie attendue? Pourriez vous aider à clarifier ce que vous essayez d'accomplir ;-) – svvac