【问题标题】:How to retrieve tables from database tables based on 1s and 0s?如何根据 1 和 0 从数据库表中检索表?
【发布时间】:2017-02-28 23:20:48
【问题描述】:

我目前有 2 个表格:Artists 和 Genres。

流派使用artist_id 连接到艺术家。 phpmyadmin流派表设置如下:

1s 表示 id=3 的艺术家,使用复选框选择了古典和说唱。

我想有效地显示一张卡片,它将在列表中显示艺术家流派。对于 artist_id = $id 的行中的每个 1,输出所有流派(在我们的例子中,古典和说唱)。

我正在考虑创建一个名为artistgenre 的新对象,并使用new artistgenre(); 创建一个新对象并分配属性。也许我什至不需要这样做。目前我有一个名为艺术家的对象,我创建$artist = Artist::findbyid($sessionid); 并使用$artist->name; $artist->location; 从数据库中输出数据。

【问题讨论】:

  • db-design 效率不高,恕我直言。流派表应该(仅)有id, genre_name。然后有另一个表将艺术家与流派 n2n 联系起来。 (arist_id, genre_id
  • @Jeff 我明白你的意思,我在genre_name 中列出了所有类型,每个类型都有一个单独的ID。然后使用(id,artist_id,genre_id)创建另一个名为artistgenre 的第三个表,并获取artist_id=$id 的结果。我不明白我将如何检索这些数据,如果我有另一个像仪器这样的表格会发生什么?是否可以使用 1 个表格来列出艺术家演奏的流派和乐器?
  • @GRS Jeff 关于设计的评论是正确的。对于 Instruments,您将重复该模式,例如创建一个名为 artist_instrument 的表。要检索相关记录,您需要使用 SQL 连接。看起来你正在使用 Eloquent,所以我建议你在这里阅读整个页面:laravel.com/docs/5.4/eloquent-relationships
  • @JoeNiland 谢谢,我没有使用 laravel,只有基本的 php 和 mysql。我设法通过使用 SELECT Genres_id FROM Artists JOIN artist_genres ON Artists.id=artist_genres.artist_id 获得了艺术家播放的流派列表。现在这给了我一个genre_ids 列表,我需要将它链接到genre 表,并通过php 导出到一个数组或类似的东西中。你能建议我正确的方法吗?
  • 换句话说,我需要从上一个 SQL 查询中导出genre_name wheregenre_id= list of id's

标签: php mysqli


【解决方案1】:

我认为这个查询是你需要的:

SELECT g.id, g.name
FROM artists a 
  INNER JOIN artist_genres ag ON a.id = ag.artist_id
  INNER JOIN genres g ON ag.genre_id = g.id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    相关资源
    最近更新 更多