Désolé pour cette question de débutant mais je me suis arraché les cheveux ces dernières heures sur quelque chose qui ne pourrait être plus simple.Union tous ne semblent pas fonctionner comme prévu. Retourner moins de lignes
J'ai une table (single_elim):
id_tournament phase player1 player2
1 1 1 2
1 1 3 4
1 1 5 10
et je suis en train d'écrire une requête qui donne un joueur me donne son adversaire. Malheureusement je ne peux pas savoir si le joueur sera dans la colonne player1 ou le joueur 2 (mais je sais qu'ils sont mutuellement exclusifs) colonne donc j'attendre une solution possible d'être:
SELECT p AS opponent FROM (
(
SELECT player1 as p FROM single_elim
WHERE
id_tournament = 1 AND
phase = 1 AND
player2 = 4
) UNION ALL (
SELECT player2 as p FROM single_elim
WHERE
id_tournament = 1 AND
phase = 1 AND
player1 = 4
)
) x;
Cependant, le retour de l'instruction 0 rangées.
Si je lance la seule instruction:
SELECT player1 as p FROM single_elim
WHERE
id_tournament = 1 AND
phase = 1 AND
player2 = 4
En supposant que player2 sera dans la colonne 4, alors il fonctionne et je reçois un résultat de la ligne avec p = 3. J'ai aussi essayé avec UNION
et i J'ai aussi essayé différentes sortes de requêtes que je m'attendais à travailler, ma conclusion est qu'il me manque quelque chose de fondamental sur le fonctionnement de l'union, mais après quelques recherches, je n'ai pas réussi à le comprendre.
Un autre exemple de requête qui a travaillé seul, mais pas avec un syndicat était:
SELECT * FROM (
SELECT COUNT(*) as n, player2 as p FROM helper
WHERE id_tournament = 1 AND player1 = 4 AND phase = 1
) UNION ALL (
SELECT COUNT(*) as n, player1 as p FROM helper
WHERE id_tournament = 1 AND player2 = 4 AND phase = 1
)
) x WHERE n = 1;
Toute aide est appréciée, merci beaucoup.
Les valeurs Tha sont toutes Ints. Oui, votre solution fonctionne! Et il semble être beaucoup plus élégant. Merci beaucoup. Je me suis dit que ça devait être un bug dans mySql 5.6 mais je n'ai trouvé aucune indication sur ce qui est vraiment étrange. – WiserTheBassist