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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> подстановка данных из других таблиц, select 
V
    Опции темы
zeltek
Дата 26.3.2008, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 10.1.2007
Где: Геническ (Украина )

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



есть у меня таблица истории (vid_id,tip_id,data,kol_vo,color_id), где в полях vid_id,tip_id,color_id
указан id, значение которого находиться в трех таблицах одинаковой структуры (id,name) с именами vid, tip, color соответственно

мне нужно сделать выборку из таблицы истории, где data равна определенному значению, но всесто цифрового значения id (в полях vid_id,tip_id,color_id) подставить значение name из соответствующей таблицы

пробывал так:
Код

SELECT b.name, c.name, a.data, a.kol_vo, d.name  FROM history a, vid b, tip c , color d
where a.data='01012008' b.id=a.vid_id and c.id=a.tip_id and d.id=a.color_id


но он ничего не выбирает, а если делать выборку только по одному полю-работает

подскажите , что не так?? smile 
PM MAIL   Вверх
v2v
Дата 26.3.2008, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

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



вложеный select.
пример
Код

select table1_val1, table2_val1  from table1, table2 where val2=(select table2_id_val2 from table2 where table1.val3=id_val3)

надеюсь понятно написал smile


--------------------
PM   Вверх
zeltek
Дата 27.3.2008, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 10.1.2007
Где: Геническ (Украина )

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



да, понятно, спасибо!

если в базе историй 1 запись, то работает исключительно, но если их хотя бы две, то выдает ошибку
"Subquery returns more than 1 row"

не подскажешь почему?
вот сам запрос
Код

select a.idk, c.name, a.dt, d.name, b.artikl, a.kl, e.vid 
from history a, artikl b, auth_members c, fabrik d, dostavka e 
where c.id=(select c.id from auth_members c, history a where a.diler_id=c.id) 
and d.id=(select d.id from fabrik d, history a where a.fabrika_id=d.id) 
and b.id=(select b.id from artikl b, history a where a.artikl_id=b.id) 
and e.id=(select e.id from dostavka e, history a where a.vid_id=e.id)


здесь подстановка идет из 4-х таблиц
PM MAIL   Вверх
Feldmarschall
Дата 27.3.2008, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



Надо не вложенные селекты городить, а разбираться - почему джойн не работает.

zeltek, если сократить количество таблиц до двух - работает? С каждой?
PM   Вверх
mishaSL
Дата 27.3.2008, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

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



zeltek, а если так попробовать:
Код

SELECT `b`.`name`, `c`.`name`, `a`.`data`, `a`.`kol_vo`, `d`.`name`  
FROM `history` AS `a`
     LEFT JOIN `vid` AS `b` ON `a`.`vid_id` = `b`.`id`
     LEFT JOIN `tip` AS `c` ON `a`.`tip_id` = `c`.`id`
     LEFT JOIN `color` AS `d` ON `a`.`color_id` = `d`.`id`
WHERE `a`.`data`='01012008'



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
zeltek
Дата 28.3.2008, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 10.1.2007
Где: Геническ (Украина )

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



Всем спасибо за ответы!
мне подошел последний вариант  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




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


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

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