簡體   English   中英

MySQL Select 語句與 where 條件和內部連接

[英]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 上找到有關別名的更多信息

https://www.w3schools.com/sql/sql_alias.asp

這與捆綁無關

您了解您的數據庫,並且應該知道哪些字段建立了關系。

此外,您還可以為表格使用別名,這將在將來為您節省一些時間。

您也可以在兩個雙引號之間使用單引號,反之亦然

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM