buat pernyataan gabungan luar sehingga Anda mendapatkan:
SELECT ids.id, table_live.moderation_date
FROM (select 1 id union all select 2 union all ....) ids
LEFT JOIN table_live
ON ids.id = table_live.id
di mana id adalah subquery yang menghitung semua nilai, kira-kira seperti ini:
$ids = '1,2,3,4,5'
$subquery = 'select '.str_replace(',', ' id union all select ', $ids).''
$sql = "SELECT ids.id, table_live.moderation_date
FROM ($subquery) ids
LEFT JOIN table_live
ON ids.id = table_live.id"
pastikan untuk memilih ids.id
, bukan table_live.id
. Dengan begitu, id akan selalu muncul, dan moderation_date hanya jika baris yang sesuai ada di table_live.
Pendekatan lain adalah menjaga kueri seperti yang Anda miliki, menyimpan hasilnya dalam sebuah array, dan kemudian menggabungkan array di php sehingga Anda mempertahankan semua kunci, dan mengisi nilai hanya di mana kunci cocok di kedua array.
Saya tidak begitu yakin jenis pustaka db apa yang Anda gunakan, jadi saya tidak tahu bagaimana cara mendapatkan larik dari hasil, tetapi misalkan Anda akan menyimpan baris dalam larik php, menggunakan representasi string dari id sebagai kunci, dan tanggal sebagai nilai, maka kode ini harus melakukan trik:
$items = array(
'1' => NULL
, '2' => NULL
, ...
);
//note: use string keys in order to merge!!
$result = array_merge($items, $resultset);
lihat:http://php.net/manual/en/function.array -merge.php