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 :: Запрос к двум таблицам в базе (MySQL)

 PHP.SU

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


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

> Описание: Помогите составить запрос
roman_php
Отправлено: 20 Сентября, 2009 - 15:20:12
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2008  


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




Доброго времени суток!
Я новичек во всех смыслах (PHP, MySQL), обращаюсь к вам за помощью.
Я делаю небольшую систему запросов пользователей к базе и присутствует необходимость выбирать определенные записи по датам.
По-порядку, есть база в ней две таблицы.
Первая:
CODE (text):
скопировать код в буфер обмена
  1. --
  2. -- Структура таблицы `user`
  3. --
  4.  
  5. CREATE TABLE IF NOT EXISTS `user` (
  6.   `id` int(4) NOT NULL auto_increment,
  7.   `username` varchar(255) NOT NULL,
  8.   `fio` varchar(255) NOT NULL,
  9.   `dolznost` varchar(255) NOT NULL,
  10.   PRIMARY KEY  (`id`)
  11. ) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=9 ;
  12.  


Вторая:
CODE (text):
скопировать код в буфер обмена
  1. --
  2. -- Структура таблицы `zapros`
  3. --
  4.  
  5. CREATE TABLE IF NOT EXISTS `zapros` (
  6.   `id` int(11) NOT NULL auto_increment,
  7.   `spec` varchar(255) NOT NULL,
  8.   `adres` text NOT NULL,
  9.   `obekt` varchar(255) NOT NULL,
  10.   `primech` text NOT NULL,
  11.   `datazaprosa` date NOT NULL,
  12.   PRIMARY KEY  (`id`)
  13. ) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=11 ;
  14.  


Я обращаюсь запросом к таблице "zapros" где $dateg - это дата передаваемая формой
CODE (text):
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT * FROM zapros WHERE datazaprosa = '$dateg'");

далее вывожу в цыкле все результаты которые соответствуют определенной даты ($dateg) и делаю из них таблицу
CODE (text):
скопировать код в буфер обмена
  1. <table width="90%" border="0" align="center">
  2.  <tr>
  3.  <td class="td1"><center>ФИО и должность специалиста</center></td>
  4.  <td class="td1"><center>Адрес объекта</center></td>
  5.  <td class="td1"><center>Наименование объекта</center></td>
  6.  <td class="td1"><center>Примечание</center></td>
  7.  <td class="td1"><center>Дата запроса</center></td>
  8.  </tr>
  9.   <?php
  10.   $myrow = mysql_fetch_row($result);
  11.   do{echo"<tr><td>$myrow[1]</td>
  12.   <td>$myrow[2]</td>
  13.   <td>$myrow[3]</td>";
  14.   if($myrow[4]!==""){echo"<td>$myrow[4]</td>";}else{echo"<td><font color='#FF0000'>нет</font></td>";}
  15.   echo"<td>$dates</td></tr>";}
  16.   while ($myrow = mysql_fetch_row($result));
  17.   ?>
  18. </table>


В элемент массива $myrow[1] попадают все поля "spec" из таблицы "zapros", но там такого вида например (gorelov, sorokina, sidorov и т.д.)
В таблице "user" есть поле "username" которое также имеет содержание с пользователями (gorelov, sorokina, sidorov и т.д.). Поле "fio" содержит полное Фамилие Имя Отчество пользователя.
Мне надо сделать такой запрос что бы из таблицы "zapros" выбирались поля spec`
`adres``obekt` `primech``datazaprosa`, а на место элемента массива в цикле подставлялись полные ФИО пользователей из таблицы "user" -> поля "fio"
Тоесть фактически нужно одним запросом выбрать разные поля из двух разных таблиц и вывести их в цикле где бы gorelov соотсетствовало Горелов Роман Геннадьевич полное ФИО.

Не предлогайте переделать структуру базы (это не приемлемо пока). Как можно это осуществить может не только запросом а средствами PHP.
Помогите пожалуйста, очень надеюсь на ващу помощь
(Добавление)
Что, ни кто не поможет?
 
 Top
EuGen Администратор
Отправлено: 20 Сентября, 2009 - 20:03:36
Post Id


Профессионал


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


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




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


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Viper
Отправлено: 21 Сентября, 2009 - 07:52:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




а как вы сделаете соответствие fio и username если у вас нет привязки ?

т.е. при составлении условия вам нужно будет ещё одно поле (к примеру userid) которое будет в обоих таблицах. тогда вы сможете точно знать что username bobik соответствует fio Бобик Татьяна Ивановна, а не Кошак Иван Иванович.

это чисто мое имхо. или я не прав ?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
roman_php
Отправлено: 21 Сентября, 2009 - 18:36:03
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2008  


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




Viper пишет:
а как вы сделаете соответствие fio и username если у вас нет привязки ?

т.е. при составлении условия вам нужно будет ещё одно поле (к примеру userid) которое будет в обоих таблицах. тогда вы сможете точно знать что username bobik соответствует fio Бобик Татьяна Ивановна, а не Кошак Иван Иванович.

это чисто мое имхо. или я не прав ?


Вот я и не знаю, структуру базы указал, жду конкретной помощи
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB