2010-12-09 111 views
0

這個網站就像一個電子商務網站,我有兩個表,我堅持。如何顯示誰有一個記錄時誰加入另一個表有記錄的表格記錄

tbl_products 
--------------- 
phash 
product 
price 
desc 
maxcount 


tbl_product_images 
------------------- 
phash 
thumb 
large 

tbl_products存儲產品描述 tbl_product_images存儲拇指和EAC產品的大的圖像的路徑。

phash是產品名稱的md5,它是我使用的,而不是在將事物組合在一起時使用的id或產品名稱。

我有什麼問題是說tbl_products有一個產品記錄和tbl_product_images 有關該產品有5行的圖像。

我將如何運行查詢?

$sql = "select 
    tbl_products.phash 
    tbl_products.product 
    tbl_products.price 
    tbl_products.desc 
    tbl_products.maxcount 
    tbl_product_images.phash 
    tbl_product_images.thumb 
    tbl_product_images.large 
    from tbl_products 
    inner join tbl_product_images 
    on tbl_products.phash = tbl_products_images.phash"; 

這將顯示5行記錄,因爲tbl_product_images有5條記錄。

的方式,我輸出是我的傳統方式

$query = $db->query("$sql"); 
while($row = $db->fetch($query)) 
{ 
.... 

} 

我真的不能確定如何我要做到這一點,如果你需要什麼,我試圖解釋,請讓我知道更多的解釋。感謝

+0

您對輸出的期望是什麼?您從TBL_PRODUCT_IMAGES獲得重複文件 – 2010-12-09 20:19:45

回答

0

最簡單的方法是限制的結果從圖像表未來的數 - 的是,如果你不小心將返回其圖像的每個產品是唯一合適的:

select 
    tbl_products.phash 
    tbl_products.product 
    tbl_products.price 
    tbl_products.desc 
    tbl_products.maxcount 
    tbl_product_images.phash 
    tbl_product_images.thumb 
    tbl_product_images.large 
    from tbl_products 
    inner join (SELECT * FROM tbl_product_images LIMIT 1) images 
    on tbl_products.phash = images.phash 

您可以添加ORDER BY [col] DESC到那個有限的查詢,如果在圖像表中有一些其他列(如日期),您可以使用它來確定出現哪個圖像。

(注:如果有在確定要返回的圖像tbl_product_images一些列,你既可以把在一個WHERE條款上查詢,或將其包含在連接標準,如:ON tbl_products.phash = tbl_product_images.phash AND tbl_product_images.color = 'Blue'

此外,如果您試圖獲得具有其所有圖像的產品,但僅需要結果集中的一行,則可能將該組圖像「轉」到列中。但是,如果每個產品可以有任意(或者簡單地說)很大數量的圖像,這是非常棘手的。您可能會更好,只是每個產品返回多行,並在應用程序代碼中處理結果...

+0

此外,出於好奇:您爲什麼將MD5哈希用作外鍵而不是產品ID? – 2010-12-09 20:18:40

相關問題