Rumah > Soal Jawab > teks badan
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粉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's
和 shift
的数据库方案,您可能需要扩展 *
并显式列出所有表名称,例如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.