1

'skuCode' の外部キーを持つ 2 つのテーブルを作成しました 私の select ステートメントは、ジョイント テーブルからデータを取得するはずです。しかし、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 で の値を確認します。$_GET の代わりに $_REQUEST を使用できます。

于 2013-04-12T08:22:04.290 に答える