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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите составить запрос к 4 таблицам 
:(
    Опции темы
Pakimon
Дата 9.7.2007, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите сделать запрос.

Есть 5 талицы:
school (id, sname, phone, email, division, RegionID, StateID, MajorID, DivisionID, address, phone) - основная таблица
region (RegionID, RegionName)
state (StateID, StateName)
majors (MajorID, MajorName)
division (DivisionID, DivisionrName)

Чтобы искалось:
При выборе только majors, division
Либо при выборе majors, division, RegionID
Либо при выборе majors, division, StateID

Форма поиска:
 
Код

<select name="RegionID" >
   <?php $request = "SELECT RegionID, RegionName FROM regions ORDER BY RegionName";
        $result = mysql_query($request);
            while ($row=mysql_fetch_array($result)) {
                            echo "<option value=\"$row[RegionID]\">$row[RegionName]</option>";
        };?></select>
                          
<select name="StateID" >
                        <?php $request = "SELECT StateID, StateName FROM state ORDER BY StateName";
                          $result = mysql_query($request);
                          while ($row=mysql_fetch_array($result)) {
                            echo "<option value=\"$row[StateID]\">$row[StateName]</option>";
                          };?></select>

 <select name="division" class="select"  size="5" height="10" nochange>
                        <?php $request = "SELECT DivisionID, DivisionName FROM division ORDER BY  DivisionName";
                          $result = mysql_query($request);
                          while ($row=mysql_fetch_array($result)) {
                            echo "<option value=\"DivisionID\">$row[ DivisionName]</option>";
                          };?></select></td></tr></table></td>
          <td width="230"><table width="230" cellpadding="0" cellspacing="0" border="0" class="border2">
          <tr><td width="230" height="209" align="center" valign="top" class="shead"><div>Majors</div><select name="majorID" class="select" size="5" height="10" nochange>
                       <?php 
                          $request = "SELECT MajorID, majors FROM majors ORDER BY MajorName";
                          $result = mysql_query($request);
                          while ($row=mysql_fetch_array($result)) {
                            echo "<option value=\"$row[MajorID]\">$row[MajorName]</option>";
                          };
                        ?></select>

PM MAIL   Вверх
belkinn
Дата 13.7.2007, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



общий запрос ко всем 5 таблицам:
Код

select *
from school s
    join region r on r.regionid=s.regionid
    join state st on st.stateid=s.stateid
    join majors m on m.majorid=s.majorid
    join division d on d.divisionid=s.divisionid
/* where нужные параметры majors, divisions e.t.c*/

PM MAIL   Вверх
Pakimon
Дата 8.8.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Выбираю в форме majorid , divisionid жму поиск и выводятся данные

Если я выбираю в форме, (Region,  majorid и divisionid), то выводит те же данные.
Как это исправить? Чтобы искалось по регионам тоже.


Код


select *
from school s
    join region r on r.regionid=s.regionid
    join state st on st.stateid=s.stateid
    join majors m on m.majorid=s.majorid
    join division d on d.divisionid=s.divisionid
where  
d.divisionid= $divisionid AND m.majorid = $majorid;

PM MAIL   Вверх
Partizan
Дата 17.8.2007, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



Pakimon, 
Код

select *
from school s
    join region r on r.regionid=s.regionid
    join state st on st.stateid=s.stateid
    join majors m on m.majorid=s.majorid
    join division d on d.divisionid=s.divisionid
where  
d.divisionid= $divisionid AND m.majorid = $majorid AND r.regionid = $regionid;



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




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


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

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