Я работаю над приложением php / mysql для инвентаризации.
У меня есть основная таблица (inv_main), в которой будут находиться ID оборудования и ID пользователя, который на самом деле содержит это оборудование.Затем у меня есть таблица оборудования (inv_equip), в которой хранится информация об оборудовании, а также о том, кто заказал продукт и для кого он был заказан, и обе ссылки связаны с идентификаторами пользователей.
Я пытаюсь вернутьрезультат equipmentID, ownerName, orderByName, ordersForName
Когда я запускаю следующий запрос, я получаю значения NULL для orderByName и OrderedForName, которые оба должны возвращать имена, поскольку эти поля имеют идентификаторы и не равны нулю.
SELECT inv_equip.tech_id, inv_user.user_lname as ownedByName,
orderFor.user_lname as orderForName, orderFrom.user_lname as orderFromName
FROM inv_main
LEFT JOIN inv_equip ON inv_main.main_equip_id = inv_equip.equip_id
LEFT JOIN inv_user ON inv_main.main_user_id = inv_user.user_id
LEFT JOIN inv_user as orderFor ON inv_equip.equip_ordered_for = inv_user.user_id
LEFT JOIN inv_user as orderFrom ON inv_equip.equip_ordered_from = inv_user.user_id
WHERE (inv_main.main_equip_id = 26)
Это то, что я получаю для своего вывода
tech_id ownedByName orderForName orderFromName
TCH20110305_1299355914 admin NULL NULL
Теперь, если я выполняю этот запрос, я снова получаю правильное значение ownByname, но orderForName возвращает запись i для каждого пользователя в моей таблице пользователей.Разница в том, что я не указываю, чтобы вернуть определенный идентификатор, но все в БД.
SELECT inv_equip.tech_id, inv_user.user_lname AS ownedByName,
orderFor.user_lname AS orderForName, orderFrom.user_lname AS orderFromName
FROM inv_main
LEFT JOIN inv_equip ON inv_main.main_equip_id = inv_equip.equip_id
LEFT JOIN inv_user ON inv_main.main_user_id = inv_user.user_id
LEFT JOIN inv_user AS orderFor ON inv_equip.equip_ordered_for = inv_user.user_id
LEFT JOIN inv_user AS orderFrom ON inv_equip.equip_ordered_from = inv_user.user_id
Я получаю следующие результаты
OwnedBy OrderedFor OrderedBy
TCH20110304_1299257155 hucker admin NULL
TCH20110304_1299257155 hucker hucker NULL
TCH20110304_1299257155 hucker beatty NULL
TCH20110304_1299257155 hucker Frank2 NULL
TCH20110304_1299257245 beatty admin admin
TCH20110304_1299257245 beatty admin hucker
TCH20110304_1299257245 beatty admin beatty
Где, когда я ищу SQL-запрос, который приводит к
itemID OwnedBy OrderedFor OrderedBy
x Hucker Beatty Frank
Любые советы о том, как яможет исправить мою логику соединения, чтобы вернуть имена уважаемых userID только с одной записью?