[英]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.