MySQL - SELECT запрос LEFT JOIN через таблицу

$lider

Бывает
Добрый день.
Есть таблица пользователей _user:
id_u username
------------
1 user1
2 user2
3 user3
------------


Записана информация в табличку _tester:
project_id_t tester_id_t
-----------
1 1(user1)
2 2(user2)
-----------

Записана информация в табличку _project:
id_p client_id
------------
1 3(user3)
2 1(user1)
------------

Не могу совладать с запросом:

SELECT project_id_t,id_u,username,?? FROM _tester LEFT JOIN _user ... LEFT JOIN _project ...

В итоге нужна табличка:

project_id_t id_u username username2
---------------------------------------------------------
1 1 user1 user3
2 2 user2 user1
---------------------------

Получить второе username через табличку _project.
Не могу сделать ОДНИМ запросом...

Спасибо.
 

Gas

может по одной?
Словами напиши что нужно получить в результате. Для каждого проекта список тестеров и клиентов?
 

HraKK

Мудак
Команда форума
а что сложного?
LEFT JOIN `project` ON `tester` ... LEFT JOIN `user` ON `project`.`id` = ....
 

prolis

Новичок
Код:
select
  t.project_id_t as projectid,
  t.tester_id_t as testerid,
  u1.username as testername,
  p.id_p as clientid,
  u2.username as clientname
from _tester t, _user u1
left join _project p on p.id_p=t.project_id_t
left join _user u2 on u2.id_u=p.id_p
where u1.id_u=t.tester_id_t
есть подозрение, что правильней не к тестерам привязывать проекты, а к проектам тестеров (поменять в порядок соединения в запросе)
 

$lider

Бывает
Код:
select
  t.project_id_t as projectid,
  t.tester_id_t as testerid,
  u1.username as testername,
  p.id_p as clientid,
  u2.username as clientname
from _tester t, _user u1
left join _project p on p.id_p=t.project_id_t
left join _user u2 on u2.id_u=p.id_p
where u1.id_u=t.tester_id_t

Unknown column 't.project_id_t' in 'on clause'
Не могу понять... Ругается на поле t.project_id_t...
 

$lider

Бывает
Снова вернулся к данному вопросу.
Не получается решить одним запросом :(
 

prolis

Новичок
Тебе помочь или посочувствовать?
Какой запрос и что именно не получается (текст ошибки)
 

$lider

Бывает
Ну собственно загруз на этот этапе:
Код:
select
  t.project_id_t as projectid,
  t.tester_id_t as testerid,
  u1.username as testername,
  p.id_p as clientid,
  u2.username as clientname
from _tester t, _user u1
left join _project p on p.id_p=t.project_id_t
left join _user u2 on u2.id_u=p.id_p
where u1.id_u=t.tester_id_t

Unknown column 't.project_id_t' in 'on clause'
Уже и подчищал запрос... Не получается выполнить :(
 

prolis

Новичок
По-русски эта ошибка означает что в таблице '_tester' нет поля 'project_id_t', а в уже приводимом мной фрегменте твоего первого сообщения показано, что в такой таблице такое поле есть. Сервер по пустякам глумиться не будет, значит непраильно написано имя поля или таблицы.
 

$lider

Бывает
По-русски эта ошибка означает что в таблице '_tester' нет поля 'project_id_t'
Да вот ужу переписал руками... И копировал и т.д.
Приложу дамп.
PHP:
CREATE TABLE IF NOT EXISTS `arr_project` (
  `id_p` int(11) NOT NULL auto_increment,
  `client_id` int(11) default NULL COMMENT 'id клиента, который завёл проект',
  `name` varchar(255) default NULL COMMENT 'название проекта',
  `type_p` int(11) default NULL COMMENT 'вид проекта (1 - Web, 2 - Desktop, 3 - Mobile, 4 - Gaming...)',
  `details` longtext COMMENT 'описание проекта',
  `details_dop` longtext NOT NULL COMMENT 'Скрытое описание',
  `open` enum('0','1') default '1' COMMENT 'открытость проекта (1 – открыт, 0 - закрыт)',
  `rough_copy` enum('0','1') default '0' COMMENT 'черновик (1 – черновик, 0 – не черновик)',
  `off` enum('0','1') default '0' COMMENT 'проект завершён (1 – да, 0 – нет)',
  `period_start` varchar(10) default NULL COMMENT 'дата начала запуска проекта',
  `period_end` varchar(10) default NULL COMMENT 'дата окончания проекта',
  `date_created` timestamp NULL default '0000-00-00 00:00:00' COMMENT 'дата создания проекта',
  PRIMARY KEY  (`id_p`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED AUTO_INCREMENT=69 ;


CREATE TABLE IF NOT EXISTS `arr_tester` (
  `id_t` int(11) NOT NULL auto_increment,
  `project_id_t` int(11) NOT NULL COMMENT 'id проекта, к которому привязан тестировщик',
  `tester_id_t` int(11) NOT NULL COMMENT 'id тестировщика',
  `activation_t` enum('0','1','2') NOT NULL COMMENT 'утверждение тестировщика (0 – не утверждён, 1 –утверждён, 2 – отказ)',
  `date_add` timestamp NULL default '0000-00-00 00:00:00' COMMENT 'дата подачи заявки',
  PRIMARY KEY  (`id_t`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=209 ;

CREATE TABLE IF NOT EXISTS `arr_user` (
  `id_u` int(11) NOT NULL auto_increment,
  `type` enum('0','1') default NULL COMMENT 'тип пользователя (0-тестировщик, 1-заказчик)',
  `username` varchar(255) NOT NULL default '',
  `password` varchar(40) NOT NULL default '',
  `email` varchar(40) NOT NULL default '',
  `avatar` varchar(140) NOT NULL default '',
  `fio` varchar(255) NOT NULL default '',
  `gender` char(1) NOT NULL default '',
  `telephone` varchar(255) NOT NULL default '',
  `experience` varchar(10) NOT NULL default '0',
  `about` text NOT NULL COMMENT 'о себе',
  `work_on` enum('0','1') NOT NULL COMMENT '0-работаем на себя, 1-на компанию',
  `company` varchar(255) NOT NULL default '',
  `position` varchar(255) NOT NULL default '',
  `company_size` varchar(10) default NULL,
  `company_site` varchar(255) NOT NULL default '',
  `company_country` varchar(40) NOT NULL default '',
  `company_city` varchar(40) NOT NULL default '',
  `level_f` int(2) NOT NULL COMMENT 'уровень тестирования: функциональное',
  `level_u` int(2) NOT NULL COMMENT 'уровень тестирования: юзабилити',
  `level_n` int(2) NOT NULL COMMENT 'уровень тестирования: нагрузочное',
  `level_b` int(2) NOT NULL COMMENT 'уровень безопасность',
  `product_kind` text NOT NULL,
  `note` longtext,
  `money` float(12,2) default NULL,
  `webmoney` varchar(13) NOT NULL default '',
  `yandex` varchar(12) default NULL,
  `icq` varchar(255) NOT NULL,
  `skype` varchar(255) NOT NULL,
  `gtalk` varchar(255) NOT NULL,
  `rating` int(2) NOT NULL default '0',
  `date_created` datetime NOT NULL default '0000-00-00 00:00:00',
  `activation` enum('0','1') NOT NULL default '0' COMMENT 'активация клиента (1 – email проверен; 0 –email не проверен)',
  `ver_anketa` enum('0','1','2','3') NOT NULL default '0' COMMENT '0-пуста,1–на проверке,2-проверена,3–отклонена',
  `banned` enum('0','1') NOT NULL default '0' COMMENT 'можно забанить пользователя(1 – бан; 0 – не бан)',
  `activation_code` varchar(32) default NULL,
  PRIMARY KEY  (`id_u`),
  UNIQUE KEY `id_u` (`id_u`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=35 ;
 

prolis

Новичок
я на работе через терминал вхожу, с файлами работать не могу, поэтому давай сам.
select project_id_t from _tester
что-то вернёт?
 

$lider

Бывает
Код:
Отображает строки 0 - 29 (108 всего, запрос занял 0.0062 сек.)
 

prolis

Новичок
теперь вижу текст дампа, но не вижу в нем таблиц с теми же названиями и полями, что в твоем первом сообщении, запрос-то писался для них. Теперь твой запрос к этой базе покажи, только реальный.
 

$lider

Бывает
Просто `arr` упустил в названиях
Код:
select
  t.project_id_t as projectid,
  t.tester_id_t as testerid,
  u1.username as testername,
  p.id_p as clientid,
  u2.username as clientname
from arr_tester t, arr_user u1
left join arr_project p on p.id_p=t.project_id_t
left join arr_user u2 on u2.id_u=p.id_p
where u1.id_u=t.tester_id_t
 

$lider

Бывает
Да
Код:
Отображает строки 0 - 29 (69 всего, запрос занял 0.0103 сек.) [sort: 1 - 6]
 

prolis

Новичок
Код:
select *
 from arr_tester t, arr_user u1
left join arr_project p on p.id_p=t.project_id_t
where u1.id_u=t.tester_id_t
уже нет?
 
Сверху