2016-10-04 6 views
-1

なぜ分かりませんが、理解できません。私が何を持っているすべては、ほとんどを命じられた分析を見つけて、それの詳細を表示することで、今SQL多重テーブルサブクエリ

mysql> select * from PETICIONES;                        +--------+------------+--------+-----------+-----------+ 
| ID_PET | FECHA_PET | ID_ANA | DNI_PAC | DNI_DOC | 
+--------+------------+--------+-----------+-----------+ 
|  1 | 2008-01-03 |  2 | 71515623A | 23456398F | 
|  2 | 2008-05-10 |  2 | 33788976F | 55776898K | 
|  3 | 2008-05-08 |  3 | 79876867X | 23456398F | 
|  4 | 2008-05-11 |  4 | 44787345H | 55776898K | 
|  5 | 2008-05-12 |  2 | 19887234W | 25349857H | 
|  6 | 2008-05-05 |  4 | 22897576R | 55776898K | 
|  7 | 2008-03-15 |  5 | 44787345H | 88647389P | 
|  8 | 2008-03-19 |  1 | 71515623A | 23456398F | 
|  9 | 2008-03-26 |  2 | 71515623A | 78988484B | 
|  10 | 2008-03-15 |  2 | 19887234W | 88647389P | 
|  11 | 2008-03-15 |  3 | 33788976F | 55776898K | 
|  12 | 2008-03-26 |  2 | 44787345H | 23456398F | 
+--------+------------+--------+-----------+-----------+ 

mysql> select * from TIPOS_ANALISIS; 
+--------+-----------------+ 
| ID_ANA | DESC_ANA  | 
+--------+-----------------+ 
|  1 | SANGRE BÁSICO | 
|  2 | SANGRE COMPLETO | 
|  3 | ORINA BÁSICO | 
|  4 | ORINA COMPLETO | 
|  5 | HECES BÁSICO | 
|  6 | HECES COMPLETO | 
+--------+-----------------+ 

:私は2つのテーブルを持っています。今私は他のものよりも多くの時間に注文された分析を見つけることができますが、私はそれを説明することができますので、これらの2つのテーブルに参加する私はあまりうまくやっていないものです。私はこれを試してみたが、それは単にエラーをtrowsと私は(エラーがある:オペランドは、1列(複数可)を含める必要があります):それを並べ替えることはできません

Select * from TIPOS_ANALISIS 
    -> where ID_ANA = (SELECT ID_ANA, COUNT(ID_ANA) as AnaCount 
    -> from PETICIONES 
    -> group by ID_ANA 
    -> order by AnaCount DESC 
    -> limit 1); 

誰かが助け、少し説明してもらえますか?お願いします?

カウント数を表示する場合はどうすればよいですか?それ、どうやったら出来るの?エラーがサブクエリは、それが1列に最大で1つの行を返すために持っていることを意味し、スカラサブクエリであるということである

Select a.* 
from TIPOS_ANALISIS a 
where a.ID_ANA = (select p.ID_ANA 
        from PETICIONES p 
        group by p.ID_ANA 
        order by AnaCount DESC 
        limit 1 
       ); 

+0

http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-を参照してください:ちょうどあなたの内側のクエリから1列を選択私にとって非常にシンプルなSQLクエリー – Strawberry

+0

すべてがいいですが、それはすべて私の練習データベースです。私はいくつかの概念を理解しようとしています。明らかに私はそれとすべてについて理論を読んだが、明らかに物事のハングを取得することでいくつかの困難があります。ああ、私は非常に簡単で、時間の節約にはならないと思っていますが、SQLを使い始めたばかりなので、それは簡単ではないようです。私は時間がたつとそれは信じるだろうが、私はまだそれほどではない。そして、私は、私のような多くの人がいると信じてあえてします。 – CNB

答えて

1

はこれを試してみてください。 SQLでは定数値の代わりにスカラー副問い合わせが使用されます。

これはMySQLで動作するかどうかは100%確信していません。特定のサブクエリでは、MySQLは約limitというのは厄介です。

しかし、あなただけのfrom句により、このことができます。

Select a.*, p.AnaCount 
from TIPOS_ANALISIS a join 
    (select p.ID_ANA, count(*) as AnaCount 
    from PETICIONES p 
    group by p.ID_ANA 
    order by AnaCount DESC 
    limit 1 
    ) p 
    on a.ID_ANA = p.ID_ANA 
+0

AnaCountとは何ですか? – Christian

+0

おかげさまで、小さな調整の後に2番目の作業がうまくいきました。そう本当にappreaciated。 (私ができるなら)残りの部分を把握しようとします。 – CNB

+0

@Christianよろしくお願いします。選択したp.ID_ANAでcount(*)をAnaCountとして見ることができます。変数と同じですが、名前テーブルにアクセスできない場合は:) –

1

Select a.* 
from TIPOS_ANALISIS a 
where a.ID_ANA = (select b.ID_ANA 
        from PETICIONES b 
        group by b.ID_ANA 
        order by count(*) DESC 
        limit 1 
       ); 
+0

実際には完全に動作します。 – CNB

0

を使用してみてくださいあなたはそれが既に言っています副選択

select * from TIPOS_ANALISIS 
where ID_ANA = (SELECT ID_ANA 
       from PETICIONES 
       group by ID_ANA 
       order by COUNT(ID_ANA) 
       limit 1) 
1

からのみID_ANAを選択してくださいあなたは1つだけの欄があるはずです。

Select * from TIPOS_ANALISIS 
where ID_ANA = (SELECT ID_ANA FROM (SELECT ID_ANA, COUNT(ID_ANA) as AnaCount 
from PETICIONES 
group by ID_ANA 
order by AnaCount DESC 
limit 1) t1); 

#Edit: To display counts as well 

SELECT ID_ANA, COUNT(ID_ANA) AS count from TIPOS_ANALISIS 
    WHERE ID_ANA = (SELECT ID_ANA FROM (SELECT ID_ANA, COUNT(ID_ANA) as AnaCount 
from PETICIONES 
    group by ID_ANA 
    order by AnaCount DESC limit 1) t1) 
GROUP BY ID_ANA; 
+0

これは役に立ちました、ありがとうございました。 – CNB

+0

あなたは大歓迎です:) –

+0

カウント数を表示したい場合、どうすればいいですか? – CNB