[英]SQL query for Inner Join with Select
我想編寫一個 SQL 查詢,如下所示。 它的語法不正確。 我該如何糾正它?
$sql_package_feature = "SELECT f.feature_id, f.feature_name FROM tbl_feature f
LEFT JOIN SELECT * FROM tbl_feature_and_profile fp WHERE fp.profile_id= ? ) ON
f.feature_id = fp.feature_id AND f.package_id = fp.package_id WHERE fp.feature_id
IS NULL AND f.package_id = ? ORDER BY f.feature_id";
我認為這是在子選擇之后缺少'as fp'。 試試這個查詢:
SELECT
f.feature_id,
f.feature_name
FROM tbl_feature f
LEFT JOIN (SELECT * FROM tbl_feature_and_profile fp WHERE fp.profile_id= ? )
as fp ON (f.feature_id = fp.feature_id AND f.package_id = fp.package_id)
WHERE
fp.feature_id IS NULL AND f.package_id = ? ORDER BY f.feature_id
如果你加入一個子選擇,你必須給它命名。 將名稱放在子選擇上而不是其中的表:
SELECT f.feature_id, f.feature_name
FROM tbl_feature f
LEFT JOIN (
SELECT *
FROM tbl_feature_and_profile
WHERE profile_id= ?
) fp ON f.feature_id = fp.feature_id AND f.package_id = fp.package_id
WHERE fp.feature_id IS NULL AND f.package_id = ?
ORDER BY f.feature_id
您沒有為第二個表命名,但您稍后會在 ON 子句中使用它。 右括號后缺少fp
:
SELECT f.feature_id, f.feature_name
FROM tbl_feature f
LEFT JOIN (
SELECT *
FROM tbl_feature_and_profile fp
WHERE fp.profile_id= ?
) fp
ON f.feature_id = fp.feature_id
AND f.package_id = fp.package_id
WHERE fp.feature_id IS NULL
AND f.package_id = ?
ORDER BY f.feature_id"
;
嘗試沒有嵌套 SELECT 語句的 JOIN,只有表名。 嘗試:
$sql_package_feature =
"SELECT f.feature_id, f.feature_name
FROM
tbl_feature f
LEFT JOIN
tbl_feature_and_profile fb
ON f.feature_id = fp.feature_id AND f.package_id = fp.package_id
WHERE fp.feature_id IS NULL AND f.package_id = ? AND fp.profile_id = ? ORDER BY f.feature_id";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.