Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Выборка данных из нескольких таблиц и обьединение

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
BespredeL
Отправлено: 20 Марта, 2013 - 16:29:01
Post Id



Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Июль 2010  
Откуда: Кашира


Помог: 0 раз(а)




Ребят, всем привет!
Возникла капец какая грандиозная проблема для меня.

У меня есть 3 таблицы: user, sotrudniki, tabel_smen

Структура таблиц такова:

user => id
nick
pass
level
ank_name
ank_famil
mfc


sotrudniki = > id
mfc
name
famil
status

tabel_smen => id
id_user
mfc
date



Теперь о таблицах:

user - зарегистрированные пользователи (если привилегированные то в поле mfc записаны id из этой же таблицы через запятую)

sotrudniki - здесь записаны сотрудники и в mfc записаны id из user

tabel_smen - здесь записываются данные о их выходах в id_user записываются через запятую id из таблицы sotrudniki и в mfc записываются id из user

Мне нужно все это сообразить на одной страничке, что бы вывод был такой:

Салон 1
Петров - 12 смен
Иванов - 20 смен
Салон 2
Пупкин - 19 смен

и.тд

Помогите плиз сообразить. А то что то никак не получается. Напичкал код циклами, и не работает один пень. Голова кипит уже.
 
 Top
Dark-def
Отправлено: 20 Марта, 2013 - 16:40:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 169
Дата рег-ции: Дек. 2012  
Откуда: Украина, Запорожье


Помог: 1 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `user`
  2. INNER JOIN `sotrudniki`
  3. ON sotrudniki.id = user.mfc
  4. INNER JOIN `tabel_smen`
  5. ON tabel_smen.id_user = sotrudniki.mfc

Если я конечно правильно понял вашу структуру БД...
ПЫСЫ: не тестил

(Отредактировано автором: 20 Марта, 2013 - 16:41:28)



-----
while(true); - // И пусть весь мир подождет
 
 Top
BespredeL
Отправлено: 20 Марта, 2013 - 16:43:53
Post Id



Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Июль 2010  
Откуда: Кашира


Помог: 0 раз(а)




Dark-def пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `user`
  2. INNER JOIN `sotrudniki`
  3. ON sotrudniki.id = user.mfc
  4. INNER JOIN `tabel_smen`
  5. ON tabel_smen.id_user = sotrudniki.mfc

Если я конечно правильно понял вашу структуру БД...
ПЫСЫ: не тестил



Рассматривал подобное, но вот как реализовать не запрос а код вывода.
Я посмотрел свой, и ох.... охренел.
4 цикла вложенные друг в друга. Это ж капец
 
 Top
Dark-def
Отправлено: 20 Марта, 2013 - 16:48:52
Post Id



Частый гость


Покинул форум
Сообщений всего: 169
Дата рег-ции: Дек. 2012  
Откуда: Украина, Запорожье


Помог: 1 раз(а)




PHP:
скопировать код в буфер обмена
  1. while($obj = DB::fetch_array($result)
  2. {
  3.  echo $obj->user.id;
  4.  echo $obj->sotrudniki.id;
  5.  echo $obj->tabel_smen.date;
  6. }

Подставьте свои поля и попробуйте так

(Отредактировано автором: 20 Марта, 2013 - 16:52:48)



-----
while(true); - // И пусть весь мир подождет
 
 Top
BespredeL
Отправлено: 20 Марта, 2013 - 16:52:22
Post Id



Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Июль 2010  
Откуда: Кашира


Помог: 0 раз(а)




Dark-def пишет:
PHP:
скопировать код в буфер обмена
  1. while($obj = DB::fetch_array($result)
  2. {
  3.  echo $obj['user.id'];
  4.  echo $obj['sotrudniki.id'];
  5.  echo $obj['tabel_smen.date'];
  6. }

Подставьте свои поля и попробуйте так


Сейчас попробую. Спасибо тебе ОГРОМНОЕ добрый человек =))))
(Добавление)
Dark-def пишет:
PHP:
скопировать код в буфер обмена
  1. while($obj = DB::fetch_array($result)
  2. {
  3.  echo $obj->user.id;
  4.  echo $obj->sotrudniki.id;
  5.  echo $obj->tabel_smen.date;
  6. }

Подставьте свои поля и попробуйте так


Что то все ровно ничего не работает =(. Уже 2 дня мозг на пределе. с этой хренью.

Смотри вот чуть изменил:

PHP:
скопировать код в буфер обмена
  1. SELECT * FROM `users`
  2. INNER JOIN `sotrudniki`
  3. ON sotrudniki.mfc = users.id
  4. INNER JOIN `tabel_smen_fakt`
  5. ON tabel_smen_fakt.id_users = sotrudniki.mfc");
  6.  
  7.  
  8. while($obj = DB::fetch_array($q){
  9.  
  10.                 echo $obj->users.id;
  11.                 echo $obj->sotrudniki.id;
  12.                 echo $obj->tabel_smen_fakt.date;
  13.  
  14.         }




CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `tabel_smen_fakt` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `id_user` varchar(16) NOT NULL,
  4.   `mfc` varchar(10) NOT NULL,
  5.   `date` int(8) NOT NULL,
  6.   `time_open` int(6) DEFAULT NULL COMMENT 'Время открытия',
  7.   `time_close` int(6) DEFAULT NULL COMMENT 'Время закрытия',
  8.   PRIMARY KEY (`id`)
  9. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=192 ;
  10.  
  11.  
  12.  
  13. CREATE TABLE IF NOT EXISTS `users` (
  14.   `id` int(11) NOT NULL AUTO_INCREMENT,
  15.   `nick` varchar(32) NOT NULL,
  16.   `passwd` varchar(32) NOT NULL,
  17.   `level` enum('0','1','2','3','4') DEFAULT '0',
  18.   `pol` enum('0','1') DEFAULT '0',
  19.   `ank_name` varchar(64) DEFAULT NULL,
  20.   `ank_famil` varchar(64) DEFAULT NULL,
  21.   `ank_phone` varchar(12) DEFAULT NULL COMMENT 'Номер рабочего телефона',
  22.   `ank_email` varchar(64) DEFAULT NULL COMMENT 'Эл.почта',
  23.   `mfc` varchar(128) DEFAULT NULL COMMENT 'ID салонов закрепленных за ТД и УМ',
  24.   PRIMARY KEY (`id`),
  25. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=50 ;
  26.  
  27.  
  28. CREATE TABLE IF NOT EXISTS `sotrudniki` (
  29.   `id` int(3) NOT NULL AUTO_INCREMENT,
  30.   `mfc` varchar(10) NOT NULL COMMENT 'ФС',
  31.   `name` varchar(32) NOT NULL COMMENT 'Имя',
  32.   `famil` varchar(32) DEFAULT NULL COMMENT 'Фамилия',
  33.   `pol` enum('0','1') NOT NULL DEFAULT '0' COMMENT 'Пол: 0 - жен, 1 - муж',
  34. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=153 ;
  35.  
  36.  

(Добавление)
INSERT INTO `tabel_smen_fakt` (`id`, `id_user`, `mfc`, `date`, `time_open`, `time_close`) VALUES
(116, '1,0,3', '2', 15032013, 954, 2155);
 
 Top
Dark-def
Отправлено: 20 Марта, 2013 - 20:09:09
Post Id



Частый гость


Покинул форум
Сообщений всего: 169
Дата рег-ции: Дек. 2012  
Откуда: Украина, Запорожье


Помог: 1 раз(а)




BespredeL
PHP:
скопировать код в буфер обмена
  1. while($obj = DB::fetch_array($result)
  2. {
  3.  echo $obj->user.id;
  4.  echo $obj->sotrudniki.id;
  5.  echo $obj->tabel_smen.date;
  6. }

это код для моего класса бд. Это я вам написал саму логику. Напишите как вы до этого выводили записи...


-----
while(true); - // И пусть весь мир подождет
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB