mysql - masalah pernyataan pilihan mybatis
过去多啦不再A梦
过去多啦不再A梦 2017-06-20 10:05:48
0
3
953

Peringatan mesej diteruskan, mesej ini mungkin orang lain membalas terus artikel anda Pada masa ini, anda perlu melakukan operasi pangkalan data untuk mengaitkan jadual artikel untuk mendapatkan kandungan artikel yang sepadan [Peringatan mesej: Terdapat balasan baharu. kepada artikel anda xxx], atau mungkin orang lain Selepas membalas ulasan anda, borang ulasan dikaitkan untuk mendapatkan kandungan ulasan [Peringatan mesej: Terdapat balasan baru untuk ulasan anda xxx]. mesej, butiran akan muncul seperti ini.

Struktur jadual pangkalan data adalah seperti berikut

mbelongbid ialah id artikel yang menjadi milik mesej, dan mbelongcid ialah id ulasan yang menjadi milik mesej.
Apabila mbelongcid kosong, bermakna mesej itu adalah balasan terus kepada artikel, dan jadual artikel dikaitkan pada masa ini
Apabila mbelongcid tidak kosong, ia bermakna objek balasan mesej adalah komen tertentu, dan jadual ulasan dikaitkan pada masa ini.

Bagaimana untuk menulis pernyataan SQL untuk memenuhi keperluan ini?
Pemikiran semasa saya ialah:

pilih

r.*, `blog`.btitle `comment`.ccontent

dari
(

select mid, mreferuid, mbelongbid, mbelongcid from message where mid = #{_parameter}

)r,

`blog` where r.mbelongbid = `blog`.bid


`comment` where r.mbelongcid = `comment`.cid

Terdapat masalah dengan menulisnya secara langsung seperti ini. Idea umum adalah untuk mengaitkan jadual yang berbeza untuk mendapatkan medan yang berbeza berdasarkan sama ada mbelongcid adalah nol.

过去多啦不再A梦
过去多啦不再A梦

membalas semua (3)
给我你的怀抱
  1. mbelongcid bukan sebahagian daripada parameter yang anda luluskan, jadi mybatis tidak tahu sama ada ia batal! , jika anda ingin merealisasikan logik yang anda inginkan, anda harus bermula dari sisi pangkalan data, seperti mencipta pandangan, yang terdiri daripada penyatuan dua pertanyaan.

select mid, mreferuid, 'blog' as type, mbelongbid as rid from message m, blog b where mbelongcid is null and mbelongbid is not null and mbelongbid = b.bid union select mid, mreferuid, 'comment' as type, mbelongcid as rid from message m, comment c where mbelongcid is not null and mbelongcid = c.cid
  1. Apabila anda menghadapi sintaks pelik seperti ini semasa menulis program, sila semak pelan reka bentuk dahulu.

  2. Siapa yang mereka bentuk helaian data? Sekurang-kurangnya tambahkan garis bawah semasa menolak gaji, ahli parti pelajar, ambil masa anda.

    过去多啦不再A梦

    Projek kami menggunakan SQL beranotasi Apabila menghadapi situasi sedemikian, kami terus menggunakan SQL dalam Penyedia untuk menyelesaikan masalah.

      扔个三星炸死你

      Pernyataan dalam bahagian MessageMapper.xml ini adalah seperti berikut:

      kelas mesej adalah seperti berikut:

        Muat turun terkini
        Lagi>
        kesan web
        Kod sumber laman web
        Bahan laman web
        Templat hujung hadapan
        Tentang kita Penafian Sitemap
        Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!