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!
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
不是數(shù)組的正確使用,我希望該表達式的值是 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
。通過這樣做,數(shù)據(jù)庫將連接兩個表,然后僅返回滿足 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's
和 shift
的數(shù)據(jù)庫方案,您可能需要擴展 *
并顯式列出所有表名稱,例如SELECT jobs.jobsID、jobs.<xyz>、shift.isBooked、shift.fk_job [...] FROM [...]
。如果兩個表中都有相同名稱的列,則可能需要解決由 join
引起的沖突,同時組合列以返回結(jié)果,如下所示: SELECT [...] shift.<xyz> as shift_xyz [. ..]來自...[]
.
Satu lagi kelebihan, anda juga hanya memerlukan satu pertanyaan SQL dan bukannya dua.