我有以下SQL查詢,但我得到了一個問題: 當我執行它時,我從「產品」表中的「sn」列中獲得了兩個相同的序列號。查詢給出了兩個相同的結果
SELECT specifications.productname,
products.sn, specifications.year,
lendings.lending_date
FROM products
INNER JOIN lendings ON products.id = lendings.product_id
INNER JOIN specifications ON products.sn LIKE CONCAT(\'%\', specifications.sn, \'%\') OR products.type LIKE CONCAT(\'%\', specifications.type, \'%\')
WHERE lendings.user_id = ?
編輯:
身外之物表:
user_id product_id
1 1
1 2
2 3
規格表:
productname year type sn
name1 2012 1 1234
name2 2011 2 4321
name3 2010 3 3241
產品表:
id sn
1 AAAAAAAA1234
2 BBBBBBBB4321
3 CCCCCCCC3241
EDIT2:
SELECT products.id,
specifications.productname,
products.sn,
specifications.year,
lendings.lending_date
FROM products
INNER JOIN lendings ON products.id = lendings.product_id
INNER JOIN specifications ON products2.sn LIKE CONCAT(specifications.sn, \'%\') OR products.type = specifications.type
WHERE lendings.user_id = ?
這是因爲規格表只包含一些序列號。 – user1273409
但是,如果它連接到多個規格行,即使規格僅包含一些序列號,它也會混淆您的結果。如果你可以發佈你的完整數據例子,它會有很大的幫助。 – dcp
是否可以比較specifications.sn和products.sn中僅有的4個數字?有時它只是最後3個,也可能是typenumber。取決於產品 - 這有點棘手:( – user1273409