UNIONS (UNION
et UNION ALL
) exigent que toutes les requêtes UNION aient :
- Le même nombre de colonnes dans la clause SELECT
- Le type de données de la colonne doit correspondre à chaque position
Votre requête a :
SELECT f.*, u1.*, u2.* ...
UNION
SELECT fid2 FROM friends
La réécriture la plus simple que j'ai est :
SELECT f.*, u.*
FROM FRIENDS AS f
JOIN USERS AS u ON u.uid = f.fid2
WHERE f.fid1 = 1
AND f.fid2 > 1
UNION
SELECT f.*, u.*
FROM FRIENDS AS f
JOIN USERS AS u ON u.uid = f.fid1
WHERE f.fid2 = 1
AND f.fid1 < 1
ORDER BY RAND()
LIMIT 6;
Vous êtes LAISSÉ JOIN aux USERS
table deux fois, mais ne semble pas utiliser les informations.