2
こんにちは皆私はこの結果を与えるcodeigniterモデルでクエリを作成するのに苦労しています。これまで私はデータベース上にこれらのテーブルを持っています。私は参加を試みているし、それは私のために働いていない。重複した曲や異なる出版社/ライターを表示するだけです。私のモデルからの私の現在の質問があります。Codeigniter select join重複結果を与える
public function get_songs_in_playlist($playlist_id)
{
$this->db->select(
"si.song_info_file_name,
si.song_info_revised_file_name,
a.artist_name,
si.song_info_id as songinfoid,
array_to_string(array_agg(c.composer_name),'/'),
array_to_string(array_agg(p.publisher_name),'/'),
array_to_string(array_agg(st.tag_name),',')"
);
$this->db->from('songs_in_playlist sp');
$this->db->join('song_info si', 'sp.song_info_id = si.song_info_id', 'left');
$this->db->join('original_artist a', 'si.artist_id = a.artist_id', 'left');
$this->db->join('composer c', 'si.composer_id = c.composer_id', 'left');
$this->db->join('publisher p', 'si.publisher_id = p.publisher_id', 'left');
$this->db->join('song_info_tags sit', 'si.song_info_id = sit.song_info_id', 'left');
$this->db->join('song_tags st', 'st.tag_id = sit.tag_id', 'left');
$this->db->where('sp.playlist_id', $playlist_id);
$this->db->group_by(array("si.song_info_id", "a.artist_name", "c.composer_name" , "p.publisher_name"));
$query = $this->db->get();
return $query->result_array();
}
ソング表
song_info_id song_name
1 songA
出版社の表
publisher_id publisher_name
1 publisherA
2 publisherB
ライター表
writer_id writer_name song_info_id publisher_id
1 writerA 1 1
2 writerB 1 2
結果は次のようになります。
参加からSong Name Writers Publishers
SongA writerA, writerB publisherA, publisherB
現在の結果:配列の
Song Name Writers Publishers
SongA writerA publisherA
SongA writerB publisherB
結果ブレインストーミングの数分後によく
Array (
[0] => Array (
[song_info_file_name] => Cartoon_-_On_On_(ft__Daniel_Levi).mp3
[song_info_revised_file_name] => 1510657326_Cartoon_-_On_On_(ft__Daniel_Levi).mp3
[status_artist_name] => Cartoon (feat. Daniel Levi)
[songinfoid] => 133 [title] => On & On (feat. Daniel Levi)
[array_to_string] =>
)
[1] => Array (
[song_info_file_name] => Cartoon_-_On_On_(ft__Daniel_Levi).mp3
[song_info_revised_file_name] => 1510657326_Cartoon_-_On_On_(ft__Daniel_Levi).mp3
[status_artist_name] => American Authors
[songinfoid] => 133
[title] => On & On (feat. Daniel Levi)
[array_to_string] =>
)
[2] => Array (
[song_info_file_name] => 01-Reverie_(feat__King_Deco).mp3
[song_info_revised_file_name] => 1510728747_01-Reverie_(feat__King_Deco).mp3
[status_artist_name] => Illenium
[songinfoid] => 136
[title] => Reverie (feat. King Deco) [array_to_string] =>
)
[3] => Array (
[song_info_file_name] => 01-Reverie_(feat__King_Deco).mp3
[song_info_revised_file_name] => 1510728747_01-Reverie_(feat__King_Deco).mp3
[status_artist_name] => Cartoon (feat. Daniel Levi)
[songinfoid] => 136
[title] => Reverie (feat. King Deco)
[array_to_string] =>
)
[4] => Array (
[song_info_file_name] => 01-Reverie_(feat__King_Deco).mp3
[song_info_revised_file_name] => 1510728747_01-Reverie_(feat__King_Deco).mp3
[status_artist_name] => American Authors
[songinfoid] => 136
[title] => Reverie (feat. King Deco)
[array_to_string] =>
)
[5] => Array (
[song_info_file_name] => Cartoon_-_On_On_(ft__Daniel_Levi).mp3
[song_info_revised_file_name] => 1510657326_Cartoon_-_On_On_(ft__Daniel_Levi).mp3
[status_artist_name] => Illenium
[songinfoid] => 133
[title] => On & On (feat. Daniel Levi)
[array_to_string] =>
)
[6] => Array (
[song_info_file_name] => American_Authors_-_Best_Day_Of_My_Life.mp3
[song_info_revised_file_name] => 1510540526_American_Authors_-_Best_Day_Of_My_Life.mp3
[status_artist_name] => Cartoon (feat. Daniel Levi)
[songinfoid] => 134
[title] => Best Day of My Life
[array_to_string] => Mix, Half, Alternative, Mid
)
[7] => Array (
[song_info_file_name] => American_Authors_-_Best_Day_Of_My_Life.mp3
[song_info_revised_file_name] => 1510540526_American_Authors_-_Best_Day_Of_My_Life.mp3
[status_artist_name] => American Authors
[songinfoid] => 134
[title] => Best Day of My Life [array_to_string] => Mix, Half, Alternative, Mid
)
[8] => Array (
[song_info_file_name] => American_Authors_-_Best_Day_Of_My_Life.mp3
[song_info_revised_file_name] => 1510540526_American_Authors_-_Best_Day_Of_My_Life.mp3
[status_artist_name] => Illenium
[songinfoid] => 134
[title] => Best Day of My Life
[array_to_string] => Mix, Mix, Half, Half, Alternative, Alternative, Mid, Mid
)
)
結果配列をprint_r()に渡します。 –
質問を結果に更新しました。何が起こったのかは、内部のすべてが複製されていることです。 – RealRich
これはポストグレですね。 – sintakonte