Во-первых, на данный момент я вынужден использовать MySQL, несмотря на то, что он устарел. Я очень хорошо понимаю этот факт. Надеюсь, вы, ребята, можете помочь мне с моим синтаксисом sql.MySQL множественный выбор с разными типами в одном запросе
Я пытаюсь получить доступ к нескольким столбцам из разных таблиц. Проблема в том, что для некоторых столбцов требуется другое предложение where, чем последний столбец, который мне нужен, и предложение where для последнего столбца требует информации от остальной части запроса, поэтому я не могу разбить его на несколько запросов, я пробовал.
Я не могу использовать union, потому что один оператор select выбирает четыре столбца, а другой выбирает один столбец.
Запрос:
(SELECT DISTINCT inventory.Quantity, itemtypes.Itemtypename,
itemtypes.ItemtypeID, inventory.ItemID
FROM inventory JOIN itemtypes ON inventory.ItemtypeID = itemtypes.ItemtypeID
JOIN sets ON inventory.SetID = sets.SetID
WHERE inventory.ItemtypeID = itemtypes.ItemtypeID
AND itemtypes.Itemtypename = 'Set'
AND sets.SetID = '".$setid."')
UNION
(SELECT DISTINCT sets.Setname
FROM sets JOIN inventory ON sets.SetID = inventory.ItemID
WHERE sets.SetID = inventory.ItemID)
Это то, что я пытался использовать, но безуспешно. Я не могу найти какой-либо другой способ привязки к различным операторам выбора без использования нескольких запросов (из-за структуры моего файла PHP, невозможно сделать правильно). Остальная часть файла будет работать, если только эта проблема будет решена. Надеюсь, вы, ребята, можете мне помочь, пожалуйста, сообщите мне, если это возможно. Дайте мне знать, если вам нужно также увидеть мой PHP-код. $ setid получается из get в файле и содержит значение, существующее в базе данных.
MySQL не устарел! Откуда у тебя это есть? Некоторые функции API были заменены новыми, вот и все. – fancyPants
На вопрос: Образец данных и желаемый вывод гарантируют помощь. И вам не нужно повторять условие соединения в предложении where. И какие разные положения, о которых вы говорите, в любом случае? Ваш запрос может быть отлично написан в одном запросе, даже если не требуется соединение. Очень неясный вопрос ... – fancyPants
@fancypants Я попытаюсь объяснить разницу с предложениями where where. Все это находится вокруг множества.SetID = '". $ Setid."' И устанавливает.SetID = inventory.ItemID. $ setid отличается от inventory.ItemID. $ setid - это в основном набор, содержащий еще несколько наборов, с теми же идентификаторами, что и inventory.ItemID. Если я использую Setname в верхнем предложении Select, я получаю имя набора из набора $ setid, чего я не хочу. Вот почему я пытаюсь получить все имена из наборов внутри того, где SetID = selected ItemIDs внутри $ setid. Я согласен, что это сбивает с толку. – user3069795