[英]MySQL Select statement with where condition and inner join
我正在使用測地線解決方案。 由於我正在制作插件,因此我需要查詢幫助。 我需要查詢的數據庫中的表是
geodesic_leveled_field_value_languages
-id
-language_id
-name
geodesic_leveled_field_value
-id
-leveled_id
-parent
-leveled_field
-enabled
-display_order
我的 Sql 聲明是
$sqlSelect = "SELECT geodesic_leveled_field_value_languages.name AS \"FieldName\", geodesic_leveled_field_value.leveled_field AS \"FieldLevel\" FROM `geodesic_leveled_field_value` INNER JOIN `geodesic_leveled_field_value_languages` on geodesic_leveled_field_value.id = geodesic_leveled_field_value_languages.id";
我希望它只返回特定 leveled_value 的名稱(來自 geodesic_leveled_field_value_languages 表)(在 geodesic_leveled_field_value 表中)
我也嘗試過以下查詢,但沒有運氣
$sqlSelect = "SELECT geodesic_leveled_field_value_languages.name AS \"FieldName\", geodesic_leveled_field_value.leveled_field AS \"FieldLevel\" FROM `geodesic_leveled_field_value` where geodesic_leveled_field_value.leveled_field = 2 INNER JOIN `geodesic_leveled_field_value_languages` on geodesic_leveled_field_value.id = geodesic_leveled_field_value_languages.id";
sql 看起來像這樣:
SELECT
gl.name
FROM
geodesic_leveled_field_value_languages gl
INNER JOIN geodesic_leveled_field_value gv ON gv.id = gl.id
WHERE
gv.level='required level value'
注意:此 sql 假定 level 列是您要過濾數據的列,並且還假定兩個表都與 id 字段連接。
您缺少 select 子句,您在該子句中指定要從哪個表返回的每一列,並且缺少根據過濾條件指定要返回的內容的 where 條件
您可以在以下鏈接中了解有關 sql.where 子句的更多信息https://www.w3schools.com/sql/sql_where.asp
請注意,gl 和 gv 是別名。 您可以在 url 上找到有關別名的更多信息
這與捆綁無關
您了解您的數據庫,並且應該知道哪些字段建立了關系。
此外,您還可以為表格使用別名,這將在將來為您節省一些時間。
您也可以在兩個雙引號之間使用單引號,反之亦然
yr 查詢中的字段 leveled_field 不在兩個表中的任何一個中,所以我猜測您的意思是級別
$sqlSelect = "SELECT gvl.name AS 'FieldName', gv.level AS 'FieldLevel' FROM `geodesic_leveled_field_value` gv INNER JOIN `geodesic_leveled_field_value_languages` gvl on gv.id = gvl.id WHERE gv.level > 5;"
我用以下查詢解決了我的問題,
$sqlSelect = "SELECT geodesic_leveled_field_value_languages.name FROM `geodesic_leveled_field_value` INNER JOIN `geodesic_leveled_field_value_languages` on geodesic_leveled_field_value.id = geodesic_leveled_field_value_languages.id and geodesic_leveled_field_value.leveled_field = 2";
基本上我只是在ON
子句之后添加了一個AND
語句。 它根據兩個ON
子句從兩個表中選擇數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.