从两个表和组中选择SQL多个

时间:2013-12-07 09:57:08

标签: mysql 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 ;

2 个答案:

答案 0 :(得分:0)

据我所知,所有必需的数据都在第一张表中。你只需要开火,

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

请注意,代替CREATE命令提供该表的输出结果,因为您希望构建SELECT语句。它更容易理解。

答案 1 :(得分: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