我在 mysql 中有一个带有多个表的数据库,并且希望将多个表连接到一个视图中,以使我不必在 php 中构建 3 或 4 个 sql 语句甚至是一个大型连接语句来获取相同的信息。
这是我想加入的所有表格
track_title
+----+------------------+
| ID | TITLE |
+----+------------------+
| 1 | Title Here |
| 2 | Another Title |
| 3 | Some Other Title |
+----+------------------+
track_artist
+----+----------------+-----------+-----------+
| ID | TRACK_TITLE_ID | ARTIST_ID | SYMBOL_ID |
+----+----------------+-----------+-----------+
| 1 | 1 | 1 | 2 |
| 2 | 1 | 2 | 1 |
| 3 | 3 | 1 | 1 |
+----+----------------+-----------+-----------+
artist
+----+-------------+
| ID | ARTIST |
+----+-------------+
| 1 | Linkin Park |
| 2 | Metallica |
+----+-------------+
symbol
+----+--------+
| ID | SYMBOL |
+----+--------+
| 1 | |
| 2 | Feat. |
+----+--------+
tracklisting
+----+----------+----------+---------------+---------+
| ID | TRACK NO | TITLE_ID | VERSION | DISC NO |
+----+----------+----------+---------------+---------+
| 1 | 1 | 1 | | 1 |
| 2 | 1 | 2 | Album Version | 1 |
| 3 | 1 | 3 | Live Version | 1 |
+----+----------+----------+---------------+---------+
这是我正在寻找的最终视图
+----+----------+------------------+---------------+-----------------------------+---------+
| ID | TRACK NO | TITLE | VERSION | ARTIST | DISC NO |
+----+----------+------------------+---------------+-----------------------------+---------+
| 1 | 1 | Title Here | | Linkin Park Feat. Metallica | 1 |
| 2 | 1 | Another Title | Album Version | | 1 |
| 3 | 1 | Some Other Title | Live Version | Linkin Park | 1 |
+----+----------+------------------+---------------+-----------------------------+---------+
在过去的 3 天里,我一直在用左、右、加入和完全加入来抨击我的头,但似乎无法让它发挥作用。
基本上我想要发生的是 track_artist 表将从各自的表中获取艺术家和符号,并将它们连接到一列中。然后加入 title 和 concat 列来获得这个视图。
full_artist_view
+----------+------------------+-----------------------------+
| TITLE_ID | TITLE | FULL_ARTIST |
+----------+------------------+-----------------------------+
| 1 | Title Here | Linkin Park Feat. Metallica |
| 2 | Another Title | |
| 3 | Some Other Title | Linkin Park |
+----------+------------------+-----------------------------+
我已经做到了这一点,但是当我尝试将其加入跟踪列表时,我似乎使我的服务器崩溃,这变得非常痛苦。没有mysql错误所以我猜我使用了错误的连接或者这是不可能的。(虽然我看不出这是不可能的)
tracklisting 表每周持续增长 1000 条记录,并且保持在 +- 75000 条记录。
对我来说,这是应该工作的 sql,但没有
FROM full_artist_view LEFT JOIN tracklisting ON
full_artist_view.TITLE_ID = tracklisting.TITLE_ID