2016-10-21 2 views
-1

я был в состоянии присоединиться к 3 таблицы и посчитайте набор данных, ставка получать столбцы на конкретной таблице она видна только 3-й столбец таблицы ..получить colums из трех объединенных таблиц

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 ['invoice']; В первой таблице (InvoiceItemTable) есть счет-фактура, и он возвращает его. Я не хочу использовать $ invoices ['price'], потому что в третьей таблице есть и «цена», и это то, что она возвращает, я хочу получить цену в первой таблице. $ invoices ['price.InvoiceItemTable'] возвращает неопределенный индекс

+1

Какой СУБД является вы используете? –

+0

Спасибо, ваш ответ работал нормально ... @ Хуан. – Ekumahost

ответ

3

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']

1

В общем, гораздо лучше явно указать ваши столбцы. При этом вы можете добавить определенное имя в интересующий вас столбец (или, наоборот, изменить имя того, что вы не должны устранять неоднозначность)

Для примера, я просто показываю столбцы вы описали, но это будет выглядеть примерно так.

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'; 

Ведение имен, таких, как это больше работы, но изолирует код от изменений и более четко показывает читателю, что возвращается.

Смежные вопросы