В вашем запросе есть последнее предложение "WHERE", в котором значение FOUND указано в таблице псевдонимов "Z" с рангом "mod", однако ваш запрос представляет собой все соединения влево, указывая на то, что вы хотите, чтобы все члены независимо от возможного совпадения были включены.правая боковая таблица, к которой вы присоединяетесь.
Кроме того, вы присоединяетесь к таблице "z" вниз по течению, отправляясь и уходя к идентификатору пользователя, затем снова присоединяясь непосредственно к '0_area' как таблица A напрямуюдля идентификатора пользователя, который появляется, он будет таким же, как было найдено из ссылки на таблицу выписок на таблицу 'z' в любом случае.
Тем не менее, и ваш участник присоединяется к вылету, а затем к области ...
Мое ПРЕДЛОЖЕНИЕ (и я могу переписать запрос как таковой) состоит в том, чтобы поменять порядок запроса, поместив вашу таблицу Area FIRST с указанием индекса «sec_id, rank» ...порядок ключей, основанный на какой-либо категории, в которой столбец меньшего подмножества был первым ... поэтому либо SEC_ID, RANK, либо RANK, SEC_ID.Затем выполните простое JOIN (не LEFT JOIN) для других таблиц ... Как минимум от:
SELECT STRAIGHT_JOIN
m.id,
m.civ,
m.prenom,
m.nom,
m.sexe,
m.depart,
m.date_entree,
m.date_sortie,
m.login_userid,
m.login_passwd,
a.rank_id,
r.rank_m,
r.rank_f,
d.user_id AS depID,
c.nom AS cordo,
z.rank
FROM
`0_area` AS z
JOIN `0_depart` AS d
on z.user_id = d.user_id
and d.user_sec = 2
JOIN `0_member` AS m
on d.depart = m.depart
AND z.user_id = m.id
LEFT JOIN `0_rank` AS r
on z.rank_id = .rid
WHERE
z.sec_id = 2
AND z.rank = 'mod'
ORDER BY
nom
В исходном запросе вы имели соединение с
member
Links to Area (on member's user ID just to ensure the "sec_id = 2")
, так какновый запрос НАЧИНАЕТСЯ исключительно с таблицы "area" в качестве псевдонима "Z", а в условии TH, где предложение явно имеет значение "sec_id = 2", вам больше никогда не потребуется обратная ссылка ...
Area (only SECID = 2 and rank = mod)
Links to Depart (on the User's ID)
Links to Members by (on the depart ID)