0

luaで配列を表示する際、常に1から始まるので、select * from ...の参照として使用している場合は、SQLクエリで使用しましtable.idた。私の問題は、SQLクエリがtable.id1で始まらない場合、または次のようになる場合はどうなり[3,5,6, ...]ますか?

私のコードはこのようなものです、

local data = {}

for row in db:nrows("SELECT song.id as id, song.title as song, artist.name as artist, genre.name as genre, album.title as album FROM song, artist, genre, album WHERE song.artist_id = artist.id AND song.genre_id = genre.id AND song.album_id = album.id AND song.duration = 120.00") do
                        data[row.id] = {}
                        data[row.id].song = row.song
                        data[row.id].artist = row.artist
                        data[row.id].genre = row.genre
                        data[row.id].album = row.album
end

配列のインデックスとして を使用したため、の出力row.idは [3,5,6, ..] です。row.iddata

私の質問は、配列のインデックスがdata[1,2,3,....] のようになるようにするにはどうすればよいですか?

4

1 に答える 1

2

インデックス変数を使用できます:

local data = {}
local next = 1

for row in db:nrows("SELECT song.id as id, song.title as song, artist.name as artist, genre.name as genre, album.title as album FROM song, artist, genre, album WHERE song.artist_id = artist.id AND song.genre_id = genre.id AND song.album_id = album.id AND song.duration = 120.00") do
    data[next] = row
    next = next + 1
end
于 2012-05-14T03:22:47.543 に答える