#php #sql
#php #sql
Вопрос:
Я смог объединить 3 таблицы и посчитать набор данных, делая ставку на получение столбцов в определенной таблице, чтобы увидеть только 3-й столбец таблицы..
SELECT *
FROM `InvoiceItemTable` a
JOIN `InvoiceTable` b
ON (b.id = a.invoice)
JOIN `products` c
ON (a.product = c.id)
WHERE b.status='1' AND c.store = '2'
//$invoices = $inginger->fetch(PDO::FETCH_ASSOC))
echo $invoices['a.price'];
Эта ошибка возврата цены: неопределенный индекс: a.price в…
в первой таблице (InvoiceItemTable) есть «цена».
echo $invoices[‘счет-фактура’];
В первой таблице есть счет-фактура (InvoiceItemTable), и он возвращает, что это работает
Я не хочу использовать $invoices[‘price’], потому что в третьей таблице тоже есть столбец ‘price’, и это то, что он возвращает, я хочу получить цену в первой таблице. $invoices[‘цена.InvoiceItemTable’] возвращает неопределенный индекс
Комментарии:
1. Какую СУБД вы используете?
2. Спасибо, ваш ответ сработал нормально…@ Хуан.
Ответ №1:
php не распознает, $invoices['a.price'];
что вам нужно использовать $invoices['price'];
если у вас одинаковое имя поля в нескольких таблицах, вам нужно создать псевдоним
SELECT a.price as a_price, b.price as b_price, c.price as c_price
и тогда вы можете использовать $invoices['a_price']
Ответ №2:
В общем, гораздо лучше явно определять свои столбцы. При этом вы можете добавить конкретное имя к интересующему вас столбцу (или, наоборот, изменить имя того, который вы не хотите удалять двусмысленность)
Для примера я просто показываю столбцы, которые вы описали, но это выглядело бы примерно так.
SELECT a.price as price, c.price as product_price
FROM `InvoiceItemTable` a
JOIN `InvoiceTable` b ON (b.id = a.invoice)
JOIN `products` c ON (a.product = c.id)
WHERE b.status='1' AND c.store = '2';
Использование имен, подобных этому, требует больше работы, но изолирует ваш код от изменений и более явно показывает читателю, что возвращается.