【发布时间】:2014-07-19 05:01:01
【问题描述】:
我有 4 个 mysql 数据库表,我如何加入它们之间
用户:
userid|username
1 | mark
2 | jon
awards_user:
awardid|userid
1 |1
2 |2
猫:
catid|catname
1 | english
2 | computer
奖项:
awardid|catid|awardname|awardlink
1 |1 |best1 |pic link
2 |2 |best2 |pic link
结果:
userid|username|catid|catname|awardid|awardname|awardlink
好的,这是我的尝试:
有效但只显示一个结果,当有成员持有奖项时 ، 我要展示所有的奖项,即使没有人持有它们。
$all_awards = $db->query_read(" SELECT * FROM " . TABLE_PREFIX . " users,awards_user,cat,awards
WHERE
awards_user.awardid = awards.awardid
AND
awards_user.userid = users.userid
AND
awards.catid = cat.catid
");
CREATE TABLE `awards` (
`id` int(10) unsigned NOT NULL auto_increment,
`forumid` int(10) unsigned NOT NULL,
`name` varchar(100) NOT NULL default '',
`link` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
--
-- Dumping data for table `awards`
--
INSERT INTO `awards` VALUES (1, 2, 'award one', 'http://www.mwadah.com/pict/noway9.gif');
INSERT INTO `awards` VALUES (2, 1, 'award 2', 'http://www.forum-ksa.com/up/uploads/images/forum-ksac59a7122d1.gif');
-- --------------------------------------------------------
--
-- Table structure for table `awards_user`
--
CREATE TABLE `awards_user` (
`id` int(10) unsigned NOT NULL auto_increment,
`awardid` int(10) unsigned NOT NULL,
`userid` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
--
-- Dumping data for table `awards_user`
--
INSERT INTO `awards_user` VALUES (2, 2, 2);
-- --------------------------------------------------------
--
-- Table structure for table `forum`
--
CREATE TABLE `forum` (
`forumid` smallint(5) unsigned NOT NULL auto_increment,
`title` varchar(100) NOT NULL default '',
PRIMARY KEY (`forumid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2;
--
-- Dumping data for table `forum`
--
INSERT INTO `forum` VALUES (1,'Main Category');
INSERT INTO `forum` VALUES (2,'Main Forum');
-- --------------------------------------------------------
--
-- Table structure for table `user`
--
CREATE TABLE `user` (
`userid` int(10) unsigned NOT NULL auto_increment,
`username` varchar(100) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
--
-- Dumping data for table `user`
--
INSERT INTO `user` VALUES (1,'admin');
INSERT INTO `user` VALUES (1,'mark');
【问题讨论】:
-
继续。尝试一下。
-
既然你知道
JOIN是必需的,你为什么不先尝试使用它,然后告诉我们你尝试了什么,如果它不起作用。