2013-04-12 47 views
1

我創建了2個'skuCode'外鍵的表格 我的select語句應該從聯合表中檢索數據。 但我無法從productDetails表中檢索數據。在mysql中選擇語句

下面是表:

CREATE TABLE productItem (
skuCode VARCHAR(8), 
productName VARCHAR(32), 
productDesc VARCHAR(128), 
unitPrice DECIMAL(18,4), 
qty INT, 
size CHAR(1), 
bigImage1 VARCHAR(32), 
smallImage2 VARCHAR(32) DEFAULT NULL, 
category VARCHAR(32), 
PRIMARY KEY (skuCode) 
) ENGINE INNODB; 

CREATE TABLE productDetails (
detailsId INT AUTO_INCREMENT, 
skuCode VARCHAR(8), 
status VARCHAR(32), 
line1 VARCHAR(128) DEFAULT NULL, 
line2 VARCHAR(128) DEFAULT NULL, 
line3 VARCHAR(128) DEFAULT NULL, 
line4 VARCHAR(128) DEFAULT NULL, 
line5 VARCHAR(128) DEFAULT NULL, 
line6 VARCHAR(128) DEFAULT NULL, 
line7 VARCHAR(128) DEFAULT NULL, 
line8 VARCHAR(128) DEFAULT NULL, 
line9 VARCHAR(128) DEFAULT NULL, 
line10 VARCHAR(128) DEFAULT NULL, 
PRIMARY KEY (detailsId), 
FOREIGN KEY (skuCode) REFERENCES productItem (skuCode) 
) ENGINE INNODB; 

下面是我的SELECT語句:

$sql = "SELECT productItem.productDesc, productItem.skuCode, productItem.unitPrice, productDetails.line1 FROM productItem, productDetails WHERE productItem.skuCode = productDetails.skuCode ='".mysql_real_escape_string($_GET["skuCode"])."';"; 
+0

我希望你正在維護一些舊版軟件,而不是像上面說明的那樣使用如此糟糕的設計實踐。請看PDO和關於數據庫設計的規範化規則: http://php.net/manual/en/book.pdo.php http://en.wikipedia.org/wiki/Database_normalization – EJTH

回答

1

試試這個:

SELECT 
    productItem.productDesc, 
    productItem.skuCode, 
    productItem.unitPrice, 
    productDetails.line1 
FROM 
    productItem 
INNER JOIN productDetails 
    ON productItem.skuCode = productDetails.skuCode 
WHERE productItem.skuCode ='".mysql_real_escape_string($_GET["skuCode"])."' 
+0

我無法檢索來自它的任何數據 –

+0

你是否收到任何錯誤?或者它只是一個空的結果? – Stephan

0

我建議使用INNER JOIN:

SELECT productItem.productDesc, productItem.skuCode, productItem.unitPrice, productDetails.line1 
FROM productItem INNER JOIN productDetails ON productItem.skuCode = productDetails.skuCode 
WHERE productDetails.skuCode = '".mysql_real_escape_string($_GET["skuCode"])."' 

不過,如果你喜歡用WHERE連接表:

SELECT productItem.productDesc, productItem.skuCode, productItem.unitPrice, productDetails.line1 
FROM productItem, productDetails WHERE productItem.skuCode = productDetails.skuCode 
AND productDetails.skuCode = '".mysql_real_escape_string($_GET["skuCode"])."' 
0
$sql = "SELECT 
    productItem.productDesc, 
    productItem.skuCode, 
    productItem.unitPrice, 
    productDetails.line1 
FROM 
productItem JOIN 
productDetails ON productItem.skuCode = productDetails.skuCode WHERE productItem.skuCode = '".mysql_real_escape_string($_REQUEST['skuCode'])."'"; 

試試上面的代碼這將得到正確的結果。並且通過echo它來檢查$_GET['skuCode']的值。您可以使用$ _REQUEST確保$ _GET。

+0

我不能從中檢索任何數據 –

+1

@benylim你檢查$ _GET ['skuCode']的結果是什麼。我希望這是空白或空。 –