Je suis tout nouveau dans la programmation SQL et j'ai un peu de mal. J'ai le script MySQL suivant:MySQL SELECT avec la colonne NULL conditionnelle
SELECT
MyPrimaryTable.PrimaryKey, Alias1.String AS Output1,
CASE
WHEN Id2 IS NOT NULL THEN Alias2.String
ELSE ""
END AS Output2
FROM MyPrimaryTable, MySecondaryTable AS Alias1, MySecondaryTable AS Alias2
WHERE
MyPrimaryTable.Id1 = Alias1.Id1
AND ((MyPrimaryTable.Id2 IS NULL) OR (MyPrimaryTable.Id2 = Alias2.Id2));
Fondamentalement, j'ai une table primaire qui contient deux ID, ID1 et ID2, et je suis en train d'associer chacun de ces numéros d'identification avec une chaîne dans une table secondaire et afficher ces chaînes dans le résultat SELECT. Cependant, le deuxième ID de la table primaire est autorisé à être NULL. La sortie que je voudrais, dans ce cas, est la première chaîne comme prévu et la deuxième chaîne comme vide (""). Le script que j'ai écrit le fait, sauf qu'il ajoute une nouvelle ligne pour chaque chaîne possible, même si toutes les lignes se ressemblent.
Résultats attendus avec chaînes possibles Foo1, foo2, foo3 et Foo4, avec deux entrées de la table:
PK Output1 Output2
1 Foo1 Foo4
2 Foo2
Ce que je reçois:
1 Foo1 Foo4
2 Foo2
2 Foo2
2 Foo2
Comment puis-je nettoyer ce et le faire fonctionner comme prévu? Merci.
EDIT: J'espérais ne pas utiliser DISTINCT parce que je veux l'utiliser dans une vue, et DISTINCT rendra la vue non modifiable.
Avez-vous envisagé group_concat()? http://dev.mysql.com/doc/refman/5.0/fr/group-by-functions.html#function_group-concat –