簡體   English   中英

MySQL問題:帶有子查詢的內部聯接沒有返回結果

[英]MySQL Issue: Inner Join with Subquery returning no results

我有一個數據庫,其中包含一組具有不同表單版本版本的表單。 下面的“有效”查詢按每個表單版本的批准使用日期成功選擇了最新的表單版本。

我想將此查詢“工作”查詢與另一個表“ forms_types”結合起來,該表返回“ form_type”列的全文描述。

我這樣做的嘗試不起作用-我也應該在查詢的“聯接”版本上獲得50個結果,但它不返回任何結果。

讓我的工作查詢正確加入,將不勝感激!

工作(50個結果,但沒有JOIN):

SELECT *
FROM forms AS t
WHERE california =
    ( 
    SELECT MAX(california)
    FROM forms
    WHERE `form_number` = t.`form_number`
    AND trucking_coverage= 1
    AND california IS NOT NULL
    AND california <= '2014-01-29'
    AND form_type <> 0
    )
ORDER BY `t`.`form_type` ASC, `t`.`form_number` ASC

不起作用(無結果):

SELECT *
FROM forms AS t
INNER JOIN forms_types 
ON 'forms.form_type' = 'forms_types.form_type'
WHERE california =
    ( 
    SELECT MAX(california)
    FROM forms
    WHERE `form_number` = t.`form_number`
    AND trucking_coverage= 1
    AND california IS NOT NULL
    AND california <= '2014-01-29'
    AND form_type <> 0
    )
ORDER BY `t`.`form_type` ASC, `t`.`form_number` ASC

您是否正在尋找這樣的東西?

SELECT f.*, t.*
  FROM 
( 
  SELECT form_number, MAX(california) california
    FROM forms
   WHERE trucking_coverage = 1
     AND california IS NOT NULL
     AND california <= '2014-01-29'
     AND form_type <> 0
   GROUP BY form_number
) q JOIN forms f
    ON q.form_number = f.form_number
   AND q.california = f.california JOIN forms_types t
    ON f.form_type = t.form_type
 ORDER BY f.form_type, f.form_number

也可以用這種方式重寫(通過利用非標准的MySQL GROUP BY擴展名)

SELECT *
  FROM
(
  SELECT *
    FROM forms f JOIN forms_types t
      ON f.form_type = t.form_type
   WHERE f.trucking_coverage = 1
     AND f.california IS NOT NULL
     AND f.california <= '2014-01-29'
     AND f.form_type <> 0
   ORDER BY california DESC
) q
 GROUP BY f.form_number
 ORDER BY f.form_type, f.form_number

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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