Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Одновременная выборка из двух таблиц (Hamyachok) 14/09/2010 - 16:37:21
      Re: Одновременная выборка из двух таблиц (FUKS) 16/09/2010 - 09:01:06
      Re: Одновременная выборка из двух таблиц (Hamyachok) 17/09/2010 - 11:33:06

> Original message text:
> From: Hamyachok - 14/09/2010 - 16:37:21
> Subject:Одновременная выборка из двух таблиц
> -----------------
> Помогите, пожалуйста!!!!!
> Есть две таблицы: `invoices` - данные о накладной, `suppliers` - контрагенты.
> структура `invoices`:
> id
> ....
> supplier
> recipient
> ...
> ...
> структура `suupliers`
> id
> Name
> ...
> ...
> Задача такая, в таблице `invoices` в полях `supplier` и `recipient` хранятся значения `id` таблицы `suppliers`. Нужно составить запрос, на получение полного перечня данных полей таблицы `invoices` и одновременно заменять `supplier` и `recipient` на suppliers`.`Name`
> Искал информацию про join, но ни как не пойму, как с его помощью выполнить мою задачу. Тащить в одном массиве значе6ния всех полей таблицы `suppliers` не хочется, а как указать только два поля - не знаю.
> Помогите составить запрос, А?
>


From: Hamyachok - 17/09/2010 - 11:33:06
Subject:Одновременная выборка из двух таблиц
-----------------
К сожалению нет.
напишу пример:
значения таблицы invoices:
id Name supplier recipient
1 1 1 2
2 2 3 2
3 3 2 1
.................................
значения таблицы suupliers:
id Name
1 Главный склад
2 Промежуточный склад №1
3 Магазин

Должен получиться результат:(запрос на накладные 1 и 2)
id Name supplier recipient
1 1 Главный склад Промежуточный склад №1
2 2 Магазин Промежуточный склад №1

Сейчас решаю эту проблему так:(пишу на PHP)
$row = mysql_query("select * from `invoices`");
$i = 0;
while ($r = mysql_fetch_assoc($row)){
$res[] = $r;
$sup = mysql_fetch_row(mysql_query("select `Name` from `suppliers` where `id` = '".$res[$i]["supplier"]."'"));
$rec = mysql_fetch_row(mysql_query("select `Name` from `suppliers` where `id` = '".$res[$i]["recipient"]."'"));
$res[$i]["supplier"] = $sup[0];
$res[$i]["recipient"] = $rec[0];
$i++;
}
Кто не знает PHP:
1. $row = mysql_query("select * from `invoices`"); - собстве6нно запрос к базе
2. while ($r = mysql_fetch_assoc($row)){ - задаем цикл, в котором автоматически переменной $r присваиваем преобразованный в ассоциативный массив элемент $row. И, собственно, пока $row не закончиться бегаем по циклу.
3. добавление нового єлемента массива в массив $res.
$res[] = $r;
4. Запросами выбираю нужные данные из таблицы `suppliers`
$sup = mysql_fetch_row(mysql_query("select `Name` from `suppliers` where `id` = '".$res[$i]["supplier"]."'"));
$rec = mysql_fetch_row(mysql_query("select `Name` from `suppliers` where `id` = '".$res[$i]["recipient"]."'"));
$res[$i]["supplier"] = $sup[0];
$res[$i]["recipient"] = $rec[0];
5. На выходе получаем необходимый мне результат. Но только код - грамосткий, ресурсы - ограничены и не бескончены. Да и исходя идеологии mysql - так поступать неправильно. Но как правильно я не знаю.
Может ещё кто-нибудь подскажет?


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
37456



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |