MySQL Select 语句,其中包含 where 条件和内部连接



我正在使用测地线解决方案。我需要查询方面的帮助,因为我正在制作插件。 数据库中需要查询的表是

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 假定级别列是要用来筛选数据的列,并且还假定两个表都与 id 文件连接。

您缺少 select 子句,您可以在其中指定要从哪个表中返回的每个列,并且缺少在筛选条件中指定要返回的内容的 where 条件

您可以在以下链接中了解有关 sql.where 子句的更多信息 https://www.w3schools.com/sql/sql_where.asp

请注意,gl 和 gv 是别名。 您可以在网址上了解有关别名的更多信息

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子句从两个表中选择数据。

最新更新