0

スクリプトをテストするためのモック e コマース データベースを作成しています。次のコードを実行したいのですが、有効期限に基づいてカードを選択するためのステートメントも追加しました。

SELECT customerCard.cardNumber, customer.firstName, customer.eMailAddress, customer.lastName, cardType, expiryDate
FROM customerCard
LEFT JOIN customer
USING ( eMailAddress ) 
LEFT JOIN card
USING ( cardNumber )
WHERE card.Expiry =< DATE_FORMAT(NOW(),'%m-%Y')
ORDER BY  `customerCard`.`cardNumber` ASC

WHERE ステートメントの行でエラーが発生しました - どうすれば修正できますか? 正しい構文は何ですか?

4

2 に答える 2

1

次のことを試してください: テーブル スキーマ/サンプル データが提供されていないため、コードは主に仮定に基づいています。あなたの有効期限などは'mm-yyyy' format

SELECT customerCard.cardNumber, customer.firstName, 
customer.eMailAddress, customer.lastName, cardType, expiryDate
FROM customerCard CC
LEFT JOIN customer CO
ON CC.eMailAddress = CO.eMailAddress 
LEFT JOIN card CD
ON CO.cardNumber = CD.cardNumber
WHERE DATE_FORMAT(CD.Expiry,'%m-%Y') =< DATE_FORMAT(NOW(),'%m-%Y') -- put both in same format
ORDER BY  CC.cardNumber ASC
于 2012-12-02T10:10:28.213 に答える
0

上記のヘルプから正しいMySQLクエリステートメントを見つけました。

SELECT customerCard.cardNumber, customer.firstName, customer.eMailAddress, customer.lastName, cardType, expiryDate
FROM customerCard
LEFT JOIN customer
USING ( eMailAddress ) 
LEFT JOIN card
USING ( cardNumber ) 
WHERE DATE_FORMAT( card.expiryDate,  '%y-%m-%d' ) <= DATE_FORMAT( 
CURRENT_TIMESTAMP ,  '%y-%m-%d' ) 
ORDER BY  `customerCard`.`cardNumber` ASC 
LIMIT 0 , 30
于 2012-12-05T08:16:49.983 に答える