Rumah  >  Soal Jawab  >  teks badan

Sambungan dalaman ke jadual yang sama menggunakan kedudukan penapis

Terima kasih kerana membantu saya, saya masih belajar SQL. Saya mempunyai jadual utama yang dipanggil JEDI dan saya cuba mendapatkan maklumat khusus tentang menggunakan syarat Inner JOIN dan Where. Secara khusus, saya ingin mendapatkan bilangan JEDI yang melawat planet tertentu antara tarikh tertentu dan tahap mereka.

Saya kemudiannya ingin menapis menggunakan Inner JOIN pada jadual yang sama dan hanya menunjukkan kepada saya keputusan untuk JEDI yang mempunyai lebih daripada 1 padawan di planet tersebut. Saya rasa syarat kedua membuat saya pergi. Saya telah menampal kod yang saya gunakan dan jadual data sampel

Hasil saya sepatutnya hanya 2, Master Obi-Wan adalah satu-satunya yang memenuhi kriteria

SELECT COUNT(jedi.jedi_id),jedi.rank_id
FROM jedi
WHERE jedi.date >='2022-01-01' AND jedi.date <='2022-06-31' AND jedi.planet='Tatoine'
INNER JOIN jedi ON jedi.jedi_id WHERE COUNT(jedi.padawan)>=2
GROUP BY jedi.rank_id
P粉278379495P粉278379495259 hari yang lalu419

membalas semua(2)saya akan balas

  • P粉878510551

    P粉8785105512024-02-04 16:59:14

    Mula-mula, anda perlu mengumpulkan lajur dan menggunakan HAVING COUNT untuk mengira nilai pendua.

    SELECT COUNT(jedi.jedi_id),jedi.rank_id
    FROM jedi
    WHERE jedi.date BETWEEN '2022-01-01' AND '2022-06-31' 
                                         AND jedi.planet='Tatoine'
    GROUP BY jedi.jedi_id, jedi.rank_id
    HAVING COUNT(jedi.jedi_id) > 1

    Nota: Ciri ini hanya berfungsi untuk setiap jedi_id 具有唯一值 jedi.padawan. Pertanyaan ini sesuai untuk senario ini.

    Walau bagaimanapun, anda boleh mengira jedi.padawan 的条件来改进查询,以便每个 jedi.jedi_id< 上重复出现 jedi.padawan nilai/kod> unik dengan menambah satu lagi yang tidak akan disertakan

    SELECT COUNT(jedi.jedi_id),jedi.rank_id
    FROM jedi
    WHERE jedi.date BETWEEN '2022-01-01' AND '2022-06-31' 
                                         AND jedi.planet='Tatoine'
    GROUP BY jedi.jedi_id, jedi.rank_id
    HAVING COUNT(jedi.jedi_id) > 1 AND
           COUNT (DISTINCT jedi.padawan) > 1

    balas
    0
  • P粉248602298

    P粉2486022982024-02-04 14:18:54

    Anda boleh menggantikan ini dengan mesti DALAM JOIN jedi DI jedi.jedi_id WHERE COUNT(jedi.padawan)>=2

    balas
    0
  • Batalbalas