2016-10-21 5 views
-1

ich in der Lage war, 3 Tabellen zu verknüpfen und den Datensatz zählen, setzen die Spalten auf bestimmten Tisch zu bekommen nur den dritten Tabellenspalte sehen ..erhalten colums von drei Tabellen verknüpft

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

Dieser Preis Return-Fehler: Undefinierter Index: a.price in ... In der ersten Tabelle gibt es "price" (InvoiceItemTable). Echo $ Rechnungen ['Rechnung']; Es gibt Rechnung in der ersten Tabelle (InvoiceItemTable) und es gibt es funktioniert Ich möchte $ Rechnungen ['Preis'] nicht verwenden, weil es "Preis" colum in der dritten Tabelle gibt und das ist es, was es zurückgibt, möchte ich Holen Sie sich den Preis in der ersten Tabelle. $ rechnungen ['price.InvoiceItemTable'] liefert undefinierten Index

+1

verwenden, das DBMS sind verwendest du? –

+0

Danke, Ihre Antwort hat gut funktioniert ... @ Juan. – Ekumahost

Antwort

3

php erkennen gewohnt $invoices['a.price']; Sie haben $invoices['price'];

verwenden, wenn Sie in mehreren Tabellen gleichen Feldnamen haben Sie einen Alias ​​

SELECT a.price as a_price, b.price as b_price, c.price as c_price 

erstellen und dann können Sie $invoices['a_price']

1

Im Allgemeinen ist es viel besser, Ihre Spalten explizit zu definieren. Auf diese Weise können Sie der Spalte, die Sie interessiert, einen bestimmten Namen hinzufügen (oder umgekehrt den Namen des Namens, den Sie nicht entfernen möchten).

Zum Beispiel, ich zeige nur die Spalten Du hast es beschrieben, aber es würde ungefähr so ​​aussehen.

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

Benennung tun, wie dies mehr Arbeit, sondern dämmt den Code von Änderungen und zeigt explizit den Leser, was zurückgegeben wird.