1

我创建了 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"])."';";
4

3 回答 3

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"])."'
于 2013-04-12T08:17:01.700 回答
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"])."'
于 2013-04-12T08:21:42.090 回答
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']并且还检查通过 echo it的值是什么。您可以使用 $_REQUEST 而不是 $_GET。

于 2013-04-12T08:22:04.290 回答