在mysql中选择语句

时间:2013-04-12 08:15:24

标签: mysql

我创建了2个表,其外键为'skuCode' 我的选择语句应该从联合表中检索数据。 但我无法从productDetails表中检索数据。

下表:

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"])."';";

3 个答案:

答案 0 :(得分: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"])."'

答案 1 :(得分: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"])."'

答案 2 :(得分: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'])."'";

尝试上面的代码,这将给出正确的结果。并通过回显检查$_GET['skuCode']的值是多少。你可以使用$ _REQUEST insteed of $ _GET。