2013-12-07 4 views
0

У меня проблема с выбором.SQL множественный выбор из двух таблиц и группы

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

У меня есть проблема, чтобы написать один вопрос, я нужно выбрать что-то об этом стиле

team_id | player1  | player2  | position | category 
1  | John Newman | Andy Roddick | 1   | 1 
2  | Roger Federer | Rafael Nadal | 1   | 1 

У меня есть две таблицы/один содержит игроков и второй содержит присутствие в команде/

CREATE TABLE IF NOT EXISTS `atendance` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `player1` int(11) NOT NULL, 
    `player2` int(11) NOT NULL, 
    `position` int(11) NOT NULL, 
    `category` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=22 ; 



CREATE TABLE IF NOT EXISTS `players` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(12) COLLATE utf8_czech_ci NOT NULL, 
    `surname` varchar(24) COLLATE utf8_czech_ci NOT NULL, 
    `datum_n` date NOT NULL, 
    `klub` varchar(60) COLLATE utf8_czech_ci NOT NULL, 
    `tel` varchar(12) COLLATE utf8_czech_ci NOT NULL, 
    `mail` varchar(32) COLLATE utf8_czech_ci NOT NULL, 
    `cas` text COLLATE utf8_czech_ci NOT NULL, 
    `foto` text COLLATE utf8_czech_ci NOT NULL, 
    `pass` text COLLATE utf8_czech_ci NOT NULL, 
    `is_active` tinyint(1) NOT NULL DEFAULT '0', 
    `valid_from` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', 
    `valid_until` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', 
    `is_admin` tinyint(1) NOT NULL DEFAULT '0', 
    `pohlavie` varchar(6) COLLATE utf8_czech_ci NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=25 ; 
+0

, что запрос вы пробовали? – Naeem

+0

где - данные выборки, outputc output. и что ты любил? –

+0

Очень сложно понять, что вам нужно. – SoonDead

ответ

0

Я думаю, вам нужно использовать JOIN особенно LEFT JOIN, как:

SELECT t.id, p1.name, p2.name, t.position, t.category 
FROM atendance t 
LEFT JOIN players p1 
ON t.player1 = p1.id 
LEFT JOIN players p2 
ON t.player2 = p2.id 
+0

Я действительно не понимаю вас, но хорошо, что он работает для вас, потому что вы уже приняли мой ответ. Счастливое кодирование и благословение Бога. – Edper

+1

sry это правильный ответ: Спасибо, что это именно то, что мне было нужно. Я ошибся в этом вопросе, что использовал второй ЛЕВЫЙ ПРИСОЕДИНЕНИЕ ИЛИ .. вот так LEFT JOIN players p1 ON t.player1 = p1.id ИЛИ JOIN игроки p2 ON t.player2 = p2.id еще раз спасибо – user2982550

0

столько, сколько я ип derstood, все необходимые данные приведены в первой таблице. Вам просто нужно стрелять,

SELECT ID, PLAYER1, PLAYER2, POSITION, CATEGORY FROM ATENDANCE 

Пожалуйста, обратите внимание, что вместо CREATE команд обеспечивают результат вывода из этой таблицы, как вы хотите SELECT заявления будет построены. Это легче понять.

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