繁体   English   中英

MySQL与PHP的选择-左联接

[英]mySQL select with PHP - left join

我有两个表“ all”和“ jdetails”。 我在所有可用的表上都有一个现有的选择查询。 我想从jdetails表中添加一些其他数据(如果有)。

所有表:

judge, year, ...

jane doe, 2012

john doe, 2011

jdetails表:

name, designation,...

jane doe, level 1

jane doe, level 5

john doe, special

如何更改下面的查询,以包括每个法官(全部)的“名称”(来自jdetails)?

我认为左连接是解决方案,但我需要考虑where子句。 另外,我绝对必须在下面获得此查询的结果,但如果存在jdetails表中的数据,则必须添加该数据。

另外,每个all.judge可以有多个指定行(jdetails.name),我想将其列为单个值。 例如-简·多伊(jane doe)的指定值为“ 1级5级”。

我会加入all.judge = jdetails.name

当前查询:

$rows = $my->get_row("SELECT all.judge, `year`, `totlevel_avg`, `totlevel_count`,   `genrank`, `poprank`, `tlevel_avg`, `tlevel_count`, `1level_avg` as `onelevel_avg`, `1level_count` as `onelevel_count`, `2level_avg` as `twolevel_avg`, `2level_count` as `twolevel_count`, `3level_avg` as `threelevel_avg`, `3level_count` as `threelevel_count`, `4level_avg` as `fourlevel_avg`, `4level_count` as `fourlevel_count`, `PSGlevel_avg`, `PSGlevel_count`, `I1level_avg`, `I1level_count`, `I2level_avg`, `I2level_count`, `GPlevel_avg`, `GPlevel_count`, `states` from `all` where `id` ='{$term}'");

任何帮助是极大的赞赏。

我没有将SELECT语句中包含的所有内容包括在内,而只是用ams.*对其进行了总结。 但是以下内容将all表链接到jdetails表,然后将指定分组到一个字段中。 然后,将结果包装在外部查询中,该查询将在all表中提取您需要的其余字段( SQL Fiddle ):

SELECT ams.*, am.Desigs
FROM 
(
  SELECT a.judge, GROUP_CONCAT(j.designation SEPARATOR ', ') AS Desigs
  FROM `all` AS a
  INNER JOIN jdetails AS j ON a.judge = j.name
  GROUP BY a.judge
) AS am 
INNER JOIN `all` AS ams ON am.judge = ams.judge

这是一个可以帮助您的示例:

`SELECT table1.column_name(s),table2.column_name(s) FROM table1 
LEFT OUTER JOIN table2 ON table1.column_name=table2.column_name
 AND table1.column_name='Parameter'`

其中表1是全部,表2是jdetails

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM