2015-01-14 33 views
0

我特林選擇像這樣Mysql的2選擇所有報表工作不正常

$query = $this->pdo->prepare('SELECT StandItems.*, Stock.* FROM StandItems, Stock 
      WHERE StandItems.StandId = ? AND StandItems.Barcode = Stock.Barcode'); 

該工程2臺,但是當我嘗試這樣的事情,它不工作

echo StandItems.Barcode 

但是,如果我做這樣的事情,它的作品。

echo Barcode 

有沒有辦法得到它由列名前添加「StandItems」工作,因爲StandItems和股票有一些相同的名稱,所以當我嘗試呼應現貨列其從standitems服用的

+0

您必須將列別名並拼出列名稱。換句話說,不要使用'standitems。*''使用'standitems.barcode作爲si_barcode'和'stock.barcode作爲sbarcode' – xQbert

回答

2

查詢的結果具有列名稱。這些名字做而不是包括表別名。因此,在查詢的上下文中,您可以 - 也應該 - 使用限定名稱。但是,結果集中只使用列名稱本身。

您可以通過使用as控制的別名,所以你可以這樣做:

select StandItems.Barcode as StandItems_BarCode 

例如,然後參照結果集中的列時使用StandItems_Barcode

順便說一下,您的查詢似乎缺少一個join。如果您確實需要在表格之間使用笛卡爾產品,請明確指出並使用cross join而不是逗號。

+0

謝謝,你能告訴我怎麼做JOIN這個查詢 –

+0

這似乎並不工作 ('SELECT StandItems。* AS si,Stock。* AS s FROM StandItems,Stock \t \t \t WHERE si.StandId =?AND si.Barcode = s.Barcode') ; –

+0

@DanielLe。 。 。您評論中的代碼不是我的答案中的內容。一次只能爲一個列添加一個別名。 –