我正在使用测地线解决方案。我需要查询方面的帮助,因为我正在制作插件。 数据库中需要查询的表是
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
子句从两个表中选择数据。