我正在研究一种纸牌游戏,可在Discord上使用,该游戏最多可使用任何一张纸牌的3份副本。我可以将卡的第一个副本添加到我的mysql数据库中,并获得结果,而不会出现问题,但是,一旦我添加了卡片组中已经存在的卡的另一个副本,这些副本就不会出现在行结果中在第二个查询中查询来自第一个查询的数据。
var sql1 = `SELECT * FROM deck_cards WHERE deckid = '${deckid}'`;
con.query(sql1, function (err, rows, fields) {
console.log(rows)
if (!err) {
var count = rows.length;
if (count) {
var arr_cardid = rows.map(i => i.cardid);
var sql2 = `SELECT cardname FROM card_info WHERE cardid in ('${arr_cardid.join("','")}') `;
console.log(sql2)
con.query(sql2, function (err, rows, fields) {
if (!err) {
var count = rows.length;
for (i = 0; i < count; i++) {
arr_cardname = []
arr_cardname.push(rows[i].cardname)
// list = arr_cardname.join(", ")
console.log(arr_cardname)
}
}
})
}
}
})
mysql中的表:https://i.gyazo.com/fb165c1f402f5234a3501e09d715b965.png
甲板1是我在第一个查询中查询的甲板。通知Cardid 2在卡座中应总共有3个副本。因此,当我显示该卡组中的卡牌列表时,应该会看到3个Cardid 2副本。这些副本将放入第二个查询(https://i.gyazo.com/8b6c8426daee2611766242961883ec37.png)中,但是,我在输出(列表)中仅看到1个副本的结果,第一个在表的第3行(索引2)中找到。在表末尾添加的其他2个副本不会出现在第二个查询结果中。有没有办法使重复的行出现在第二个查询的结果中?我已经看到了联合,内部联接,计数等可用于解决问题的方法,但我想问一下是否有一种更简单,更有效的方法可以完成这项工作。
这是for循环还是第二个.join(“,”)的问题?