Mysql получить разные значения из одной таблицы в одной строке - PullRequest
0 голосов
/ 04 августа 2020

Пожалуйста, исправьте заголовок, если он не понятен, к сожалению, мой английский sh не идеален, и я не знаю, как объяснить свою проблему одним предложением.

У меня есть таблица песни и один из исполнителей, это таблица песен:

|-----------------------------|
| id  | title | artist | date |
|-----------------------------|
| 1   | song1 | 1      | unix |
|-----------------------------|
| 2   | song2 | 1      | unix |
|-----------------------------|
| 3   | song3 | 2      | unix |
|-----------------------------|
| 4   | song4 | 3      | unix |
|-----------------------------|

А это таблица исполнителей

|----------------------|
| id  | name    | date |
|----------------------|
| 1   | artist1 | unix |
|----------------------|
| 2   | artist2 | unix |
|----------------------|
| 3   | artist3 | unix |
|----------------------|

Я хотел бы получить список из 10 случайных песен и других 3 названия песен. Я хочу провести викторину, в которой пользователи слушают песню и должны угадывать название, поэтому мне нужно 4 возможных ответа, правильные и 3 устаревших названия. Итак, результат должен быть таким:

|-------------------------------------------------------------------------|
| id  | title | artist_id | artist_name | date | wrong1 | wrong2 | wrong3 |
|-------------------------------------------------------------------------|
| 1   | song1 | 1         | artist1     | unix | song2  | song3  | song4  |
|-------------------------------------------------------------------------|

Как я могу этого достичь? Большое спасибо, дайте мне знать, если вам понадобится дополнительная информация.

1 Ответ

0 голосов
/ 04 августа 2020

Я бы посоветовал вам использовать два запроса. Одна должна вернуть правильную песню.

|--------------------------------------------------|
| id  | title | artist_id | artist_name | date |   |
|--------------------------------------------------|
| 1   | song1 | 1         | artist1     | unix |   |
|--------------------------------------------------|

Другой может вернуть три случайные песни

SELECT * FROM table_name
ORDER BY RAND()
LIMIT 3;

|--------------------------------------------------|
| id  | title | artist_id | artist_name | date |   |
|--------------------------------------------------|
| 2   | song2 | 2         | artist2     | unix |   |
| 3   | song3 | 3         | artist3     | unix |   |
| 4   | song4 | 4         | artist4     | unix |   |
|--------------------------------------------------|

Затем вы можете объединить четыре записи в свой код.

...