Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> связать 3 таблицы и выести результат, динамически сформировать ячейки и столбц 
:(
    Опции темы
oppo
Дата 1.7.2008, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 15.7.2006

Репутация: нет
Всего: нет



Привет - есть 3 таблицы
-------------------------------------
заезды 
CREATE TABLE `#__gintur_zaezdid` (
  `zaezdid` int(11) NOT NULL default '0', // завязано с  ID `#__gintur_pricing
  `numerid` int(11) NOT NULL default '0', //// завязано с  ID  `#__gintur_numera`
  `dopzaezd` int(11) NOT NULL default '0',
  `otel` int(11) NOT NULL default '0',
  `zena` varchar(150) NOT NULL default '',
  `mesta` varchar(254) NOT NULL default '',
  PRIMARY KEY  (`zaezdid`,`numerid`,`dopzaezd`),
  KEY `idx_gintur_zaezdid` (`numerid`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
-------------
заезды - связано с zaezdid
CREATE TABLE `#__gintur_pricing` (
  `id` int(10) NOT NULL auto_increment,
  `accid` int(10) NOT NULL default '0',
  `title` varchar(150) NOT NULL default '',
  `description` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
---------------
номера  связано с numerid
CREATE TABLE `#__gintur_numera` (
  `id` int(11) NOT NULL auto_increment,
  `description` varchar(200) NOT NULL default '',
  `dop` mediumtext NOT NULL,
  `otel` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

===========

запрос составил такой 
      $query= "SELECT p.title AS ptitle,p.id AS pid, z.*,n.description AS ntitle,n.id AS nid "
    . "\nFROM #__gintur_zaezdid AS z "
                     . "\n LEFT  JOIN #__gintur_pricing AS p ON p.id=z.zaezdid  "
     . "\n LEFT  JOIN #__gintur_numera AS n  ON n.id =z.numerid "
    . "\nWHERE p.accid='".($row ->id)."' AND z.otel = '".($row ->id)."' AND n.otel = '".($row ->id)."' "
    ."\n ORDER BY p.id"
;
А потом из этого всего должна создаться табличка

    #          |         Заезд1           |          Заезд2               |        Заезд3
=================================================
Номер1  | цена/места/скидки  |   цена/места/скидки   |  цена/места/скидки

Номер2  | цена/места/скидки  |   цена/места/скидки   |  цена/места/скидки

Номер3  | цена/места/скидки  |   цена/места/скидки   |  цена/места/скидки
////// и так далее

кол-во столбцов (от кол-ва Заездов ) и ячеек (от кол-ва Номеров) формируется динамичечки - вот загвоздка + завязка 
 цена/места/скидки   от Заездов и Номеров
PM MAIL   Вверх
Akina
Дата 1.7.2008, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(oppo @  1.7.2008,  23:26 Найти цитируемый пост)
кол-во столбцов (от кол-ва Заездов ) и ячеек (от кол-ва Номеров) формируется динамичечки 

Значит и текст запроса надо формировать динамически в PHP-коде. У MySQL напряги с перекрестными запросами...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
oppo
Дата 2.7.2008, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 15.7.2006

Репутация: нет
Всего: нет



Цитата

Значит и текст запроса надо формировать динамически в PHP-коде. У MySQL напряги с перекрестными запросами... 


не хотелось бы запросы к базе вводить в цикл - может можно одним обойтись ? 
      $query= "SELECT p.id AS pid,p.title AS ptitle, z.*,n.id AS nuid, n.description AS nutitle"
    . "\nFROM #__gintur_zaezdid AS z "
     . "\n LEFT  JOIN #__gintur_pricing AS p ON p.id=z.zaezdid  "
     . "\n LEFT  JOIN #__gintur_numera AS n  ON n.id =z.numerid "
    . "\nWHERE p.accid='".($row ->id)."' AND z.otel = '".($row ->id)."' AND n.otel = '".($row ->id)."' "
    ."\n ORDER BY p.id,nuid "
    ;
//где $row ->id =2 // связь по отелю
Наглядно если вывести в массив == оно выглядит  так :
 Array ( 
 
 [0] => Array ( [pid] => 16 [ptitle] => Заезд1 [zaezdid] => 16 [numerid] => 3 [dopzaezd] => 2 [otel] => 2 [zena] => цена 1 [mesta] => есть [nuid] => 3 [nutitle] => Номер1 ) 

 [1] => Array ( [pid] => 16 [ptitle] => Заезд1 [zaezdid] => 16 [numerid] => 4 [dopzaezd] => 1 [otel] => 2 [zena] => цена 2 [mesta] => да [nuid] => 4 [nutitle] => Номер2 ) 
 
 [2] => Array ( [pid] => 16 [ptitle] => Заезд1 [zaezdid] => 16 [numerid] => 5 [dopzaezd] => 2 [otel] => 2 [zena] => цена 3 [mesta] => пропили [nuid] => 5 [nutitle] => Номер3 )
 
 [3] => Array ( [pid] => 16 [ptitle] => Заезд1 [zaezdid] => 16 [numerid] => 6 [dopzaezd] => 1 [otel] => 2 [zena] => цена 4 [mesta] => только [nuid] => 6 [nutitle] => Номер4 )
 
 [4] => Array ( [pid] => 18 [ptitle] => Заезд2 [zaezdid] => 18 [numerid] => 3 [dopzaezd] => 0 [otel] => 2 [zena] => == [mesta] => 0 [nuid] => 3 [nutitle] => Номер1 ) 
 
 [5] => Array ( [pid] => 18 [ptitle] => Заезд2 [zaezdid] => 18 [numerid] => 4 [dopzaezd] => 0 [otel] => 2 [zena] => == [mesta] => 0 [nuid] => 4 [nutitle] => Номер2 ) 
 
 [6] => Array ( [pid] => 18 [ptitle] => Заезд2 [zaezdid] => 18 [numerid] => 5 [dopzaezd] => 0 [otel] => 2 [zena] => == [mesta] => 0 [nuid] => 5 [nutitle] => Номер3 )
 
 [7] => Array ( [pid] => 18 [ptitle] => Заезд2 [zaezdid] => 18 [numerid] => 6 [dopzaezd] => 0 [otel] => 2 [zena] => == [mesta] => 0 [nuid] => 6 [nutitle] => Номер4 ) 
 
 [8] => Array ( [pid] => 19 [ptitle] => Заезд3 [zaezdid] => 19 [numerid] => 3 [dopzaezd] => 0 [otel] => 2 [zena] => заезд3 1 [mesta] => местазаезд3 1 [nuid] => 3 [nutitle] => Номер1 )
 
 [9] => Array ( [pid] => 19 [ptitle] => Заезд3 [zaezdid] => 19 [numerid] => 4 [dopzaezd] => 0 [otel] => 2 [zena] => заезд3 2 [mesta] => местазаезд3 2 [nuid] => 4 [nutitle] => Номер2 ) 
 
 [10] => Array ( [pid] => 19 [ptitle] => Заезд3 [zaezdid] => 19 [numerid] => 5 [dopzaezd] => 0 [otel] => 2 [zena] => заезд3 3 [mesta] => местазаезд3 3 [nuid] => 5 [nutitle] => Номер3 ) 
 
 [11] => Array ( [pid] => 19 [ptitle] => Заезд3 [zaezdid] => 19 [numerid] => 6 [dopzaezd] => 0 [otel] => 2 [zena] => заезд3 4 [mesta] => местазаезд3 4 [nuid] => 6 [nutitle] => Номер4 ) 
 )
 
 цена=[zena]
 места=[mesta]
скидки=[dopzaezd]

В РЕЗУЛЬТАТЕ НУЖНО ПОЛУЧИТЬ ИЗ всего таблицу :

               |         Заезд1           |          Заезд2               |        Заезд3
=================================================
Номер1  | цена/места/скидки  |   цена/места/скидки   |  цена/места/скидки

Номер2  | цена/места/скидки  |   цена/места/скидки   |  цена/места/скидки

Номер3  | цена/места/скидки  |   цена/места/скидки   |  цена/места/скидки

Номер4  | цена/места/скидки  |  цена/места/скидки    |  цена/места/скидки

Это сообщение отредактировал(а) oppo - 2.7.2008, 10:29
PM MAIL   Вверх
Akina
Дата 2.7.2008, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(oppo @  2.7.2008,  11:17 Найти цитируемый пост)
не хотелось бы запросы к базе вводить в цикл - может можно одним обойтись ? 

Какой цикл???
Два запроса. Первый позволяет получить список полей, которые надо получать во втором запросе. Соответствено по результатам первого строится второй с необходимыми полями, условиями отбора и групировки. Он и вернет нужные данные в нужной форме.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
oppo
Дата 2.7.2008, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 15.7.2006

Репутация: нет
Всего: нет



Цитата

Два запроса. Первый позволяет получить список полей, которые надо получать во втором запросе.

можно разжевать как пример - дело магарычевое
Мне указали как пример сделать так - только первый столбец из названий номеров а первая строка из заездов
http://laspi.com/sanat/01/price
http://laspi.com/sanat/58/price

Это сообщение отредактировал(а) oppo - 2.7.2008, 10:47
PM MAIL   Вверх
Akina
Дата 2.7.2008, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Чего тут собсно разжевывать? Ты что, неспособен получить имена полей таблицы? или может не способен построить SQL-строку запроса?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
oppo
Дата 2.7.2008, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 15.7.2006

Репутация: нет
Всего: нет



могу , но туплю   smile  -  
Цитата : “что позволено Цезарю, не позволено быку”.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0484 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.