Php 相同相册名称查询结果

Php 相同相册名称查询结果,php,sql,Php,Sql,我正在尝试插入歌手的专辑,例如: 我的心:歌手1 可爱的:歌手1和歌手3 触摸我:歌手5 可爱的专辑,由两位歌手分享 以此类推,在用PHP显示结果时,我喜欢这样: 我的心:歌手1 可爱的:歌手1-歌手3 触摸我:歌手5 碰巧,我有一个相同的专辑名,歌手之间不共享,在显示结果时,它显示如下: 我的心:歌手1-歌手8 可爱的:歌手1-歌手3 触摸我:歌手5 我的心:歌手1-歌手8 但是,Singer1和Singer8不共享此相册,我想显示如下: 我的心:歌手1 可爱的:歌手1-歌手3 触摸我:歌手5

我正在尝试插入歌手的专辑,例如:

我的心:歌手1

可爱的:歌手1和歌手3

触摸我:歌手5

可爱的专辑,由两位歌手分享

以此类推,在用PHP显示结果时,我喜欢这样:

我的心:歌手1 可爱的:歌手1-歌手3 触摸我:歌手5

碰巧,我有一个相同的专辑名,歌手之间不共享,在显示结果时,它显示如下:

我的心:歌手1-歌手8

可爱的:歌手1-歌手3

触摸我:歌手5

我的心:歌手1-歌手8

但是,Singer1和Singer8不共享此相册,我想显示如下:

我的心:歌手1

可爱的:歌手1-歌手3

触摸我:歌手5

我的心:歌手8


你想完成什么取决于你的数据库结构对不起,我不能理解你的查询语言。您的行应该具有唯一标识符;通常使用数字标识。你可能有一张桌子把唱片和歌手联系起来,对吧

album_singer
+---------------------+
| album     | singer  |
+---------------------+
| My Heart  | Singer 1|
| My Heart  | Singer 8|
| ...                 |
此表可能只包含您的专辑和歌手的ID

albums                  singers                 album_singer
+---------------------+ +---------------------+ +----------------------+
| Id      | Name      | | Id     | Name       | | album_id | singer_id |
+---------------------+ +---------------------+ +----------------------+
| 201     | My Heart  | | 101    | Singer 1   | | 201      | 101       |
| 202     | My Heart  | | 102    | Singer 8   | | 202      | 102       |
| ...                 | | ...                 | | ...                  |
如果这是您的结构,您的查询应该类似于:

SELECT albums.name as album_name, 
       singers.name as singer_name
FROM album_singer 
JOIN albums on album_singer.album_id = albums.id
JOIN singers on album_singer.singer_id = singer.id

# Output:
# +------------------------------------+
# | album_name    | singer_name        |
# +------------------------------------+
# | My Heart      | Singer 1           |
# | My Heart      | Singer 2           |
# +------------------------------------+
这有用吗

//Assuming you are connected to the database...

$album_query = "SELECT id, album FROM album_table ORDER BY id";
$album_results = mysqli_query($database_connection, $album_query);

// Create while loop listing the albums. 
while(list($id, $album) = mysqli_fetch_array($album_results, MYSQLI_NUM)){
    echo 'Album -' . $album . '<br>';
    echo 'Singers - ';

    // Then create another query based on the first loop's album name.
    // *note - would maybe be easier to do this with id's instead of names.
    // If there are no common fields, perhaps you could set a variable from a JOIN in the first query. ?
    $singers_query = "SELECT singer_id, singer_name, album
                      FROM singers_table
                      WHERE album = ' . $album . ' ";
    $singers_results = mysqli_query($database_connection, $singers_query);

        //Now create another while loop to nest inside the album loop.
        while(list($singer_id, $singer_name, $album)=mysqli_fetch_array($singers_results, MYSQLI_NUM)){
            echo  $singer_name . ', ';
        }
    echo '<br><br>';
}

问题是,如果我们找到了同一张专辑,我就有机会决定是否在这张专辑中组合歌手,例如《我的心》,它不应该被组合,不管它多么可爱。如果“名称”列不是唯一的,你应该有一种独特的方式来识别每一行。对不起,我没有得到你的想法我的查询的结果:从mariyat_silsila JOIN mariyat_silsila_JOIN mariyat_silsila_JOIN ON mariyat_silsila.ids=mariyat_silsila_JOIN.id_silsilaj其中mariyat_silsila.silsila_tran=my Heart LIMIT 0,30有点像专辑名是我的心脏,歌手id是370,我的心脏和歌手id是375,我想我的桌子结构和你上面的桌子一样
//Assuming you are connected to the database...

$album_query = "SELECT id, album FROM album_table ORDER BY id";
$album_results = mysqli_query($database_connection, $album_query);

// Create while loop listing the albums. 
while(list($id, $album) = mysqli_fetch_array($album_results, MYSQLI_NUM)){
    echo 'Album -' . $album . '<br>';
    echo 'Singers - ';

    // Then create another query based on the first loop's album name.
    // *note - would maybe be easier to do this with id's instead of names.
    // If there are no common fields, perhaps you could set a variable from a JOIN in the first query. ?
    $singers_query = "SELECT singer_id, singer_name, album
                      FROM singers_table
                      WHERE album = ' . $album . ' ";
    $singers_results = mysqli_query($database_connection, $singers_query);

        //Now create another while loop to nest inside the album loop.
        while(list($singer_id, $singer_name, $album)=mysqli_fetch_array($singers_results, MYSQLI_NUM)){
            echo  $singer_name . ', ';
        }
    echo '<br><br>';
}