У меня немного проблемы с несколько сложных запросов, и я не могу понять, что именно происходит не так ...Inner Join MySQL Query игнорирует предложение WHERE?
запросе касается двух таблиц MySQL:
$userstable:
|| id || firstname || lastname
|| 1 || John || Doe
$membershipstable:
|| groupid || templateid || userid ||
|| 0 || 1 || 1 ||
|| 1 || 0 || 2 ||
|| 0 || 2 || 3 ||
Вот запрос:
$query = "
SELECT DISTINCT
u.id,
u.firstname,
u.lastname
FROM $userstable AS u
INNER JOIN $membershipstable AS M1 ON u.id = M1.userid
INNER JOIN $membershipstable AS M2 ON M1.groupid = M2.groupid
WHERE M2.templateid = :currenttemplateid
";
для справки, я уже проверил переменное для заполнителя :currenttemplateid
и возвращает правильно ... то, что я пытаюсь сделать, это возвращение из запроса только записи для текущей стемы id
, однако запрос возвращает данные пользователя из $userstable
для любого пользователя, связанного с шаблоном, независимо от того, соответствует ли этот шаблон шаблону id
текущему, указанному в предложении WHERE
.
Если я только что полностью выработал это, тогда извиняюсь, но я работаю с этим кодом в течение нескольких часов, поэтому мои чувства могут быть не такими резкими, как они должны быть ... Любая помощь очень ценится.
Для этого образца данных, что ваш ожидаемый результат? – Blank
Например, если «$ currenttemplateid» сказал «1», я бы ожидал, что будут возвращены только пользовательские данные для пользователя с идентификатором «1», так как пользователь с идентификатором «id -> 1» связан с ' templateid -> 1'. Моим текущим возвратом являются не только пользователи, связанные с 'templateid -> 1', но и пользователи, связанные с' templateid -> 2'. –
Думаю, вам просто нужно присоединиться к '$ membershipstable' за один раз, какова ваша цель присоединиться дважды? – Blank