2010-07-22 147 views
0

我遇到問題而沒有返回任何結果。有查詢中沒有任何錯誤,但我希望看到的結果,我沒有得到任何SQL查詢在預期時沒有返回結果

這裏是我的表結構

CREATE TABLE IF NOT EXISTS `boards` (
    `boardid` int(2) NOT NULL auto_increment, 
    `boardname` varchar(255) NOT NULL default '', 
    `boarddesc` varchar(255) NOT NULL default '', 
    PRIMARY KEY (`boardid`) 
); 

CREATE TABLE IF NOT EXISTS `messages` (
    `messageid` int(6) NOT NULL auto_increment, 
    `boardid` int(2) NOT NULL default '0', 
    `topicid` int(4) NOT NULL default '0', 
    `message` text NOT NULL, 
    `author` varchar(255) NOT NULL default '', 
    `postdate` datetime default NULL, 
    PRIMARY KEY (`messageid`) 
); 

CREATE TABLE IF NOT EXISTS `topics` (
    `topicid` int(4) NOT NULL auto_increment, 
    `boardid` int(2) NOT NULL default '0', 
    `topicname` varchar(255) NOT NULL default '', 
    `author` varchar(255) NOT NULL default '', 
    `counter` int(5) NOT NULL default '0', 
    `sticky` char(1) NOT NULL default 'n', 
    `locked` char(1) NOT NULL default 'n', 
    PRIMARY KEY (`topicid`) 
); 

CREATE TABLE IF NOT EXISTS `users` (
    `userid` int(25) NOT NULL auto_increment, 
    `first_name` varchar(25) NOT NULL default '', 
    `email` varchar(255) NOT NULL default '', 
    `username` varchar(25) NOT NULL default '', 
    `password` varchar(32) NOT NULL default '', 
    `salt` char(3) NOT NULL default '', 
    `sex` varchar(6) NOT NULL default '', 
    `user_level` enum('0','1','2','3') NOT NULL default '0', 
    `signup_date` datetime NOT NULL default '0000-00-00 00:00:00', 
    `last_login` datetime NOT NULL default '0000-00-00 00:00:00', 
    `activated` enum('0','1') NOT NULL default '0', 
    PRIMARY KEY (`userid`) 
) 

,這裏是我的查詢

SELECT b.boardid 
     , b.boardname 
     , t.topicid 
     , t.topicname as topic 
     , m.author as mauthor 
     , m.message as message 
     , DATE_FORMAT(m.postdate, '%M %d, %Y, %r') as postdate 
     , tm.post_count as posts 
     , u.user_level 
     , DATE_FORMAT(signup_date, '%b %Y') as joindate 
     , ms.avatar 
     , ms.signature 
    FROM topics t 
INNER 
    JOIN boards b 
     ON t.boardid = b.boardid 
INNER 
    JOIN messages m 
     ON t.topicid = m.topicid 
INNER 
    JOIN users u 
     ON m.author = u.username 
INNER 
    JOIN misc ms 
     ON ms.userid = u.userid 
INNER 
    JOIN (SELECT author 
       , COUNT(*) as post_count 
      FROM messages 
      GROUP 
      BY author) as tm 
     ON tm.author = m.author 
    WHERE t.topicname = 'Honeylands Respite' AND b.boardname = (SELECT boardname FROM boards WHERE boardname='General Chit Chat') 

我認爲這是監守我使用內部連接,也許我應該使用外連接

+0

也許它的一個貧窮的註釋,但不是你需要外鍵鏈接表?... – bAN 2010-07-22 10:04:21

回答

1

最後基於子查詢條件

b.boardname = (SELECT boardname FROM boards WHERE boardname='General Chit Chat') 

可以簡化爲

b.boardname = 'General Chit Chat' 

一些問題:

  • 你確定主題 'Honeylands 喘息' 的存在?
  • 您確定 董事會'一般的閒聊'存在嗎?
  • 是 您確定主題'Honeylands 喘息'在船上'General Chit Chat'?
  • 你肯定有 任何消息上的主題「Honeylands 喘息」?
  • 什麼是表misc的結構(和 的目的)?
  • 應該 聯接表雜項是外部 加入?
+0

我得到它的工作....我想這是一個PHP錯誤,而不是SQL – AdRock 2010-07-23 13:40:00

0

你100%確保您的WHERE子句實際上有一個結果集?

表'用戶'的表格格式是什麼?

+0

添加的用戶表,是應該有與數據記錄 – AdRock 2010-07-22 10:12:30