1
ネストされたクエリを使用して2つのクエリを結合しようとしています。SQLのネストされたクエリ
Mach ShortenCode Tme
Mach1 451 2017-12-25 08:25
Mach2 854 2017-12-25 08:25
だから451はMACH1上で結果を生成
SELECT DISTINCT(de.MCH_CODE) AS Mach, md.MAT_CODE as ShortenCode, de.TIME as start_time
FROM table1 AS de
JOIN table1table2 AS md
ON de.subcode= md.subcode
WHERE de.ev = '123' AND de.time > '2017-11-14 07:00' and de.side = 'R' AND de.end IS NULL AND de.Subcat = 'STOP'
ORDER BY de.time
: 最初のものはこれです。トリッキーな部分は、ShortenCodeのために、以前のMachが表示されていることを示したいと思います。私が取得する副問合せすることができますどのように
SELECT distinct de.MCH_CODE FROM table1 AS de
join table2 as md
ON de.subcode = md.subcode
WHERE de.ShortenCode = 'the ones displayed in the first query'
:それはようなものになるだろう
Mach ShortenCode Tme Mach(Previous)
Mach1 451 2017-12-25 08:25 Mach4
Mach2 854 2017-12-25 08:25 Mach5
Basilyマッハ列はMACH1、MACH2ともMach4とMACH5を持っています。 私はこれを試みたが、成功しませんしました:
SELECT t1.Mach, t1.ShortenCode, t1.start_time, t2.PreviousMach
FROM(SELECT DISTINCT(de.MCH_CODE) AS Mach, md.MAT_CODE as ShortenCode, de.TIME as start_time, mch_
FROM table1 AS de
JOIN table1table2 AS md
ON de.subcode= md.subcode
WHERE de.ev = '123' AND de.time > '2017-11-14 07:00' and de.side = 'R' AND de.end IS NULL AND de.Subcat = 'STOP'
ORDER BY de.time
) t1
join
(SELECT distinct de.MCH_CODE FROM table1 AS de
join table2 as md
ON de.subcode = md.subcode
WHERE de.ShortenCode = t1.ShortenCode
) t2
あなたは、私は非常に多くの
「DISTINCT」は**機能ではありません(列上)。これは 'SELECT DISTINCT'の一部であり、選択された行全体に適用されます。これらの冗長な括弧を削除します。たとえば、 'SELECT DISTINCT de.MCH_CODE AS Mach、... 'を削除します。 – jarlh
、ありがとう@jarlh。クエリのロジックはどうですか?これは、2つを組み合わせる正しい方法です – Christian
私はリバースエンジニアリングクエリが嫌いです。参照:[私は非常に単純なSQLクエリと思われるものに対してMCVEを提供するのはなぜですか?](https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve- for-what-like-to-a-very-simple-sql-query) – Strawberry