2015-02-20 3 views
1

Мне действительно нужна помощь. Для начала я хотел бы представить, что проблема:внутреннее соединение 4 таблицы mysql C#

General Table: 
create table cworkdb.models(
    model_id integer auto_increment, 
    model_name varchar(40) not null, 
    man_id integer not null, 
    cpu_id integer not null, 
    ram_quantity integer not null, 
    hdd_capacity integer not null, 
    video_id integer not null, 
    primary key(model_id), 
    foreign key(man_id) references manufacturers(man_id), 
    foreign key(cpu_id) references cpu_comp(cpu_id), 
    foreign key(video_id) references videocard(video_id) 
); 

И 3 таблицы (которые у меня есть ссылка на):

create table cworkdb.manufacturers(
    man_id integer auto_increment, 
    man_name varchar(50) not null, 
    primary key(man_id) 
); 
create table cworkdb.videocard(
    video_id integer auto_increment, 
    video_name varchar(45) not null, 
    video_memory double not null, 
    primary key(video_id) 
) 
create table cworkdb.cpu_comp(
    cpu_id integer auto_increment, 
    cpu_name varchar(60) not null, 
    cpu_freq double not null, 
    primary key(cpu_id) 
); 

Моя SelectQuery строка -

string selectQuery = "select model_id, model_name, man_name, cpu_name,ram_quantity,hdd_capacity,video_name" 
           + "from (cworkdb.models inner join cworkdb.cpu_comp on cworkdb.models.cpu_id=cworkdb.cpu_comp.cpu_id)" 
           +"inner join cworkdb.manufacturers on cworkdb.models.man_id=cworkdb.manufacturers.man_id" 
           +"inner join cworkdb.videocard on cworkdb.models.video_id=cworkdb.videocard.video_id"; 

Когда Я пытаюсь использовать это в MySqlCommand - забрасывается ошибка:

проблема близка к первому внутреннему соединению.

Хотя я изменил (удалил первые скобки), он все еще говорит, что есть ошибка. Где я совершил ошибку? Любая помощь будет оценена по достоинству.

+3

добавить пробел в конце всех строк –

+0

Спасибо! Я не понял, что пробелы должны быть в конце всех строк. :) – Reborn

+0

Хорошего дня;) –

ответ

2

Вы это написать:

string selectQuery = "select model_id, model_name, man_name, cpu_name,ram_quantity,hdd_capacity,video_name" 
          + "from (cworkdb.models inner join cworkdb.cpu_comp on cworkdb.models.cpu_id=cworkdb.cpu_comp.cpu_id)" 
          +"inner join cworkdb.manufacturers on cworkdb.models.man_id=cworkdb.manufacturers.man_id" 
          +"inner join cworkdb.videocard on cworkdb.models.video_id=cworkdb.videocard.video_id"; 

, но вам не хватает пространства в конце строки (или, если вы хотите в начале строки), поэтому, когда вы конкатенации строки внутренний присоединиться прикреплено к)

Так написать это:

string selectQuery = "select model_id, model_name, man_name, cpu_name,ram_quantity,hdd_capacity,video_name " 
          + "from (cworkdb.models inner join cworkdb.cpu_comp on cworkdb.models.cpu_id=cworkdb.cpu_comp.cpu_id) " 
          +"inner join cworkdb.manufacturers on cworkdb.models.man_id=cworkdb.manufacturers.man_id " 
          +"inner join cworkdb.videocard on cworkdb.models.video_id=cworkdb.videocard.video_id"; 
1

Вы должны добавить пробелы в предложения SQL.

string selectQuery = "select model_id, model_name, man_name, cpu_name,ram_quantity,hdd_capacity,video_name " 
          + "from (cworkdb.models inner join cworkdb.cpu_comp on cworkdb.models.cpu_id=cworkdb.cpu_comp.cpu_id) " 
          +"inner join cworkdb.manufacturers on cworkdb.models.man_id=cworkdb.manufacturers.man_id " 
          +"inner join cworkdb.videocard on cworkdb.models.video_id=cworkdb.videocard.video_id"; 
Смежные вопросы