cari

Rumah  >  Soal Jawab  >  teks badan

Tidak dapat mendapatkan data daripada pertanyaan SQL bersarang

rreeee

Dalam pertanyaan pertama kod di atas, saya mendapat semua baris daripada jobs 表中获取所有行。在第二个嵌套查询中,我试图从 shift 表中获取第一个查询返回的每个 jobsID. Tetapi saya tidak mendapat sebarang data. Data itu ada dan ia sepatutnya mengembalikan data tetapi saya tidak mendapat sebarang data. Apa yang saya buat salah di sini? tolong bantu!

P粉594941301P粉594941301231 hari yang lalu456

membalas semua(1)saya akan balas

  • P粉979586159

    P粉9795861592024-04-04 09:11:08

    Saya rasa terdapat salah faham tentang cara data dikembalikan dan cara pertanyaan kedua berfungsi. Menurut anda:

    Anda akan mengembalikan berbilang baris. Jadi pertanyaan pertama berfungsi. Tetapi mendapatkan semula berbilang baris akan menghasilkan rowss 成为 array。因此,用作下一个查询的输入的 rowss.jobsID 不是数组的正确使用,我希望该表达式的值是 undefined , yang akan menyebabkan pertanyaan kedua tidak mengembalikan apa-apa.

    Untuk membuktikan tambah console.log(rowss) seperti ini:

    [...]
    connection.query(
      `SELECT * FROM jobs WHERE company_fk=${company_id}`,
      (err, rowss) => {
        console.log(rowss);
    [...]

    Untuk menyelesaikan masalah ini, saya cadangkan menggunakan fungsi sql dan memancarkan join。通过这样做,数据库将连接两个表,然后仅返回满足 where baris keadaan. Pernyataan gabungan sepatutnya kelihatan seperti ini:

    SELECT * FROM jobs WHERE company_fk=${company_id} LEFT JOIN shift ON shift.fk_job = jobs.jobsID WHERE isBooked=1

    Tips: Berdasarkan ob'sshift 的数据库方案,您可能需要扩展 * 并显式列出所有表名称,例如SELECT jobs.jobsID、jobs.<xyz>、shift.isBooked、shift.fk_job [...] FROM [...]。如果两个表中都有相同名称的列,则可能需要解决由 join 引起的冲突,同时组合列以返回结果,如下所示: SELECT [...] shift.<xyz> as shift_xyz [. ..]来自...[].

    Satu lagi kelebihan, anda juga hanya memerlukan satu pertanyaan SQL dan bukannya dua.

    balas
    0
  • Batalbalas