Переписать SQL-оператор с USING на ON - PullRequest
0 голосов
/ 05 ноября 2010

Привет, ребята.Возникли проблемы здесь.Приходится в веб-отелях с одинаковыми версиями MySQL и PHPmyadmin, но реагирует по-разному.Может что-то с MySQL.ini.

Как я могу переписать это в ON, используя Using.

SELECT wiederquist_elearn_question.idelearn_question AS idelearn_question, idelearn_answer, idelearn_user, name, email, address, zip, city, phone, extra, user_created_time, newsletter, answertime, title, description, illustration, answertext, correct
FROM wiederquist_elearn_user
INNER JOIN wiederquist_elearn_question_answered
USING ( idelearn_user ) 
INNER JOIN wiederquist_elearn_question
USING ( idelearn_question ) 
INNER JOIN wiederquist_elearn_answer
USING ( idelearn_answer ) 
WHERE name IS NOT NULL 
AND idelearn =1

Надеюсь, вы можете мне помочь здесь. Спасибо.

Редактировать:

Теперь я получил это, но он показывает 11.700 результатов, и он должен показывать только 2. Но это правильные результаты, их просто зацикливание.

SELECT wiederquist_elearn_question.idelearn_question AS idelearn_question, name, email, address, zip, city, phone, extra, user_created_time, newsletter, answertime, title, description, illustration, answertext, correct
FROM wiederquist_elearn_user
INNER JOIN wiederquist_elearn_question_answered ON wiederquist_elearn_question_answered.idelearn_user
INNER JOIN wiederquist_elearn_question ON wiederquist_elearn_question.idelearn_question
INNER JOIN wiederquist_elearn_answer ON wiederquist_elearn_answer.idelearn_answer
WHERE name IS NOT NULL 
AND idelearn =1

Таблицы БД:

    CREATE TABLE `wiederquist_elearn` (
  `ideLearn` int(11) unsigned NOT NULL auto_increment COMMENT 'id',
  `name` varchar(250) default 'uden navn' COMMENT '''Kursus nav',
  `correctRequired` int(1) default '0' COMMENT '''Korrekt svar påkrævet for at fortsætt',
  `successNumber` int(11) default '0' COMMENT '''Antal korrekte svar krævet for "bestået',
  `displayMode` varchar(45) default 'single' COMMENT '''Ved systemets opstart, enkeltvisning eller listevisnin',
  `repeatable` int(1) default '0' COMMENT 'Kan kurset gentages',
  `learning` int(1) default '0',
  `mandatory` int(1) default '0',
  `errorMessage` text,
  PRIMARY KEY  (`ideLearn`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

CREATE TABLE `wiederquist_elearn_answer` (
  `idelearn_answer` int(10) unsigned NOT NULL auto_increment,
  `answertext` text,
  `correct` int(1) default NULL,
  `idelearn_question` int(10) unsigned default NULL,
  `order` int(10) unsigned default NULL,
  `correctText` text,
  PRIMARY KEY  (`idelearn_answer`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

CREATE TABLE `wiederquist_elearn_question` (
  `idelearn_question` int(10) unsigned NOT NULL auto_increment,
  `title` text,
  `description` text,
  `idelearn` int(10) unsigned default NULL,
  `illustration` varchar(150) default 'dummy.jpg',
  PRIMARY KEY  (`idelearn_question`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

CREATE TABLE `wiederquist_elearn_question_answered` (
  `idelearn_question_answered` int(10) unsigned NOT NULL auto_increment,
  `idelearn_user` int(10) unsigned default NULL,
  `idelearn_question` int(10) unsigned default NULL,
  `idelearn_answer` int(10) unsigned default NULL,
  `answertime` timestamp NULL default CURRENT_TIMESTAMP,
  PRIMARY KEY  (`idelearn_question_answered`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

CREATE TABLE `wiederquist_elearn_user` (
  `idelearn_user` int(10) unsigned NOT NULL auto_increment,
  `name` varchar(250) default NULL,
  `email` varchar(250) default NULL,
  `address` varchar(200) default NULL,
  `zip` int(4) default NULL,
  `city` varchar(90) default NULL,
  `phone` varchar(45) default NULL,
  `extra` varchar(250) default NULL,
  `user_created_time` timestamp NULL default CURRENT_TIMESTAMP,
  `newsletter` int(1) default NULL,
  PRIMARY KEY  (`idelearn_user`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

Ответы [ 2 ]

1 голос
/ 05 ноября 2010

Я сделал это!ууу

SELECT wiederquist_elearn_question.idelearn_question AS idelearn_question, wiederquist_elearn_answer.idelearn_answer, wiederquist_elearn_user.idelearn_user, name, email, address, zip, city, phone, extra, user_created_time, newsletter, answertime, title, description, illustration, answertext, correct
FROM wiederquist_elearn_user
INNER JOIN wiederquist_elearn_question_answered
USING ( idelearn_user ) 
INNER JOIN wiederquist_elearn_question
USING ( idelearn_question ) 
INNER JOIN wiederquist_elearn_answer ON wiederquist_elearn_answer.idelearn_answer = wiederquist_elearn_question_answered.idelearn_answer
WHERE name IS NOT NULL and idelearn = 1

Спасибо, ребята

0 голосов
/ 05 ноября 2010

Вы должны использовать INNER JOIN jointablename ON jointablename.join_id = tablename.id, для этого случая запрос будет выглядеть так:

SELECT weq.idelearn_question AS idelearn_question, idelearn_answer, weu.idelearn_user 
as idelearn_uder, name, email, address, zip, city, phone, extra, user_created_time, 
newsletter, answertime, title, description, illustration, answertext, correct
    FROM wiederquist_elearn_user AS weu
       INNER JOIN wiederquist_elearn_question_answered AS weqa 
           ON weu.idelearn_user = weu.idelearn_user
      INNER JOIN wiederquist_elearn_question AS weq 
           ON weq.idelearn_question = (table your need to join).idelearn_question
and so on..
...