2016-07-05 5 views
0

Мне нужна помощь при объединении трех таблиц, на этом изображении показаны поля и имена таблиц.Соединение трех таблиц

Извлечение из базы данных:

voting table 
id name closed date  votes_up votes_down 
4 29192  0 1467441761  32   14 
21 14427  0 1467450299  1   0 
20 14464  0 1467449751  0   0 
14 27345  0 1467447075  0   0 
9 27329  0 1467443096  1   0 


games table 
id id_gamepressure id_gamepressure2 title 
256    8228   10759 Yu-Gi-Oh! World Championship 2007 
512    2520    9294 Boulder Dash Rocks! 
768   10155   12664 SpongeBob vs. The Big One. Beach Party Cook-Off 
1024    9587    8484 Nacho Libre 

images table 
id id_game id_gamepressure filename 
30695 10001   173814 10001_deca-sports_11792.jpg 
30690 10001   173819 10001_deca-sports_1524.jpg 
30692 10001   173817 10001_deca-spoets_3551.jpg 
30694 10001   173815 10001_deca-sportss_572.jpg 
30693 10001   173816 10001_deca_sports_8866.jpg 
30691 10001   113818 10001_deca-sports_9417.jpg 

В основном я хочу, чтобы быть в состоянии найти самые популярные игры с помощью из «таблицы голосования», используя поле «votes_up», то связь сопоставления его с «настольными играми» и, наконец, с «таблицей изображений»

Я хочу отобразить ее в виде списка, отсортированную по самой высокой голосующей игре.

так:

  1. название игры (рейтинг) (изображение)
+0

Пожалуйста, добавьте свое определение таблицы. –

+0

покажите нам, что вы сделали – theinarasu

+0

вам не нужно присоединяться к ним, тогда вам нужно подсчитать голоса в выборе с дополнительным запросом, а затем заказать это значение. Предполагая, что «таблица голосования» голосов - это отдельная таблица, а не числовое значение. По сути, вам нужно собрать голоса за каждую игру. – ArtisticPhoenix

ответ

0

Что-то вроде этого, я не знаю, фактические имена таблиц с изображением. Или какие поля вы хотите.

SELECT 
    g.id, 
    i.id //or whatever fields you want. 
FROM 
    games AS g 
INNER JOIN 
    images AS i 
ON 
    g.id = i.id_game 
LEFT JOIN 
    votes AS v 
ON 
    g.id = v.name 
ORDER BY 
    v.votes_up 
DESC 

В этом случае, как голоса уже сумма, которую Вы не должны считать их, как я думал, (голосов будет 1 строка за один голос, то есть то, что я имел в виду)

Id использовать левое соединение, но я полагаю, что вам нужна самая голосуемая игра, это не имеет большого значения.

убедитесь, что идентификаторы являются индексами, а также подсчет голосов или сортировка убьет производительность.

+0

Я пробовал и получал эту ошибку. SQLSTATE [42000]: Синтаксическая ошибка или нарушение прав доступа: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с .id // или любыми полями, которые вы хотите. ОТ игры AS g INNER JOIN images AS 'at line 3 – CPuser

+0

Удалено // и все еще получается ... SQLSTATE [42000]: Синтаксическая ошибка или нарушение доступа: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «.id ОТ игр в г INNER JOIN изображения, как я ON g.id = i.id_game ЛЕВЫЙ» в строке 3 – CPuser

Смежные вопросы