J'ai deux tables. Je veux les joindre d'une manière qu'un seul enregistrement dans la bonne table est retourné pour chaque enregistrement dans le tableau le plus à gauche. J'ai inclus un exemple ci-dessous. Je voudrais éviter les sous-requêtes et les tables temporaires car les données réelles sont d'environ 4 millions de lignes. Je ne me soucie pas non plus de savoir quel enregistrement de la table la plus à droite correspond, tant que l'un ou l'autre n'a pas de correspondance. Merci!Aide à la requête MySQL JOIN: retourne une seule ligne de la table la plus à droite pour chaque ligne de la table la plus à gauche
utilisateurs de table:
-------------
| id | name |
-------------
| 1 | mike |
| 2 | john |
| 3 | bill |
-------------
transactions de table:
---------------
| uid | spent |
---------------
| 1 | 5.00 |
| 1 | 5.00 |
| 2 | 5.00 |
| 3 | 5.00 |
| 3 | 10.00 |
---------------
résultat attendu:
---------------------
| id | name | spent |
---------------------
| 1 | mike | 5.00 |
| 2 | john | 5.00 |
| 3 | bill | 5.00 |
---------------------
Pourquoi tout le monde est-il groupé par user.id (une clé primaire) et user.name? Une fois que vous avez groupé par une clé primaire, vous n'avez vraiment besoin d'rien d'autre. Ai-je raté quelque chose, ou est-ce que nous ne faisons que copier @OMG Poneys? – TheJacobTaylor
@TheJacobTaylor: SQL standard requiert que vous incluiez les colonnes non agrégées dans GROUP BY. Le standard ANSI supporte le fait de ne pas définir toutes les colonnes s'il y a un sous-groupe inutile - MySQL supporte cela, mais cela ne fonctionnera pas sur la plupart des autres bases de données. –
@TheJacobTaylor: MySQL ne nécessite pas toutes les colonnes de regroupement; presque tous les autres SGBD, ainsi que le standard SQL. –