Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Выборка из таблицы по ключу другой таблицы  (Прочитано 18248 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Arinyshka
Белый клоун, бедный мученик...
Постоялец

by
Offline Offline
Пол: Женский

« : 11-04-2008 08:56 » 

SQL.
Есть таблица ImageFor , в которой лежат картинки. 2 поля - id_image  (счетчик, примари ключ) и собственно image_Purpose  - картинка.
И вторая таблица Purpose , в которой лежат текстовые записи. Поля: Id_purpose  (счетчик, примари ключ)), Purpose, Id_Image . В последнем лежат id используемой картинки.
Мне нужно выбрать картинки, но в порядке  Id_purpose ... Как?
Записан

Непонятная свобода обручем сдавила грудь...
zubr
Гость
« Ответ #1 : 11-04-2008 09:11 » 

SELECT (SELECT  image_Purpose FROM ImageFor WHERE  id_image=Purpose.Id_Image) AS Image FROM Purpose
Записан
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #2 : 11-04-2008 09:17 » 

SELECT image_purpose FROM ImageFor INNER JOIN Purpose ON Purpose.id_image=ImageFor.id_image WHERE IN(SELECT id_purpose FROM Purpose);
« Последнее редактирование: 11-04-2008 09:19 от McZim » Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Arinyshka
Белый клоун, бедный мученик...
Постоялец

by
Offline Offline
Пол: Женский

« Ответ #3 : 11-04-2008 09:24 » 

Работает!!!    УлыбаюсьЛюблю!
теперь осталось понять, как  Внимание! Говорит и показывает... 
Спасибо  Класс!
Записан

Непонятная свобода обручем сдавила грудь...
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #4 : 11-04-2008 09:25 » 

Arinyshka, Улыбаюсь чей вариант работает?
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Arinyshka
Белый клоун, бедный мученик...
Постоялец

by
Offline Offline
Пол: Женский

« Ответ #5 : 11-04-2008 09:36 » 

первый. Во втором жалуется на Incorrect syntax near the keyword 'IN'.
Записан

Непонятная свобода обручем сдавила грудь...
Arinyshka
Белый клоун, бедный мученик...
Постоялец

by
Offline Offline
Пол: Женский

« Ответ #6 : 11-04-2008 10:07 » 

но в первом не позволяет выбрать несколько полей... а нужно еще 2 из таблички рисунков - id рисунка и active, оба integer...
второй никак не могу уговорить работать Жаль  Помогите добить...
Записан

Непонятная свобода обручем сдавила грудь...
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #7 : 11-04-2008 10:07 » 

Код: (Text) "ORACLE SQL"
SELECT i.image_purpose
  FROM imagefor i, purpose p
 WHERE i.image_id = p.image_id
 ORDER BY p.id_purpose
Записан

Удачного всем кодинга! -=x[PooH]x=-
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #8 : 11-04-2008 10:10 » 

попробуй из 2-ой преобразовать:
SELECT image_purpose FROM ImageFor INNER JOIN Purpose ON Purpose.id_image=ImageFor.id_image WHERE image_purpose.id_image IN(SELECT id_purpose FROM Purpose);
или просто:

SELECT image_purpose FROM ImageFor INNER JOIN Purpose ON Purpose.id_image=ImageFor.id_image
« Последнее редактирование: 11-04-2008 11:49 от PooH » Записан

Удачного всем кодинга! -=x[PooH]x=-
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #9 : 11-04-2008 10:11 » 

Цитата
но в первом не позволяет выбрать несколько полей...
это почему же?
Записан

Удачного всем кодинга! -=x[PooH]x=-
Arinyshka
Белый клоун, бедный мученик...
Постоялец

by
Offline Offline
Пол: Женский

« Ответ #10 : 11-04-2008 11:10 » 

 SELECT ImageFor.Image_Purpose,  ImageFor.id_Image, ImageFor.active
  FROM ImageFor
  INNER JOIN Purpose
  ON Purpose.id_image=ImageFor.id_image


Заработало вот в таком виде Улыбаюсь Так я еще и понимаю, как и почему оно работает! Женское счастье... Улыбаюсь
Спасибо Улыбаюсь
Записан

Непонятная свобода обручем сдавила грудь...
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #11 : 11-04-2008 11:13 » 

Arinyshka, вы же говорили что нужна выборка по id_purpose. Еще рекомендую делать проверку на существование пустого поля.
« Последнее редактирование: 11-04-2008 11:16 от McZim » Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #12 : 11-04-2008 11:46 » 

тут еще от СУБД и диалекта SQL зависит...

--
P.S.: с таким условием "image_purpose.id_image IN(SELECT id_purpose FROM Purpose);" я прогнал... каюсь. =)
Записан

Удачного всем кодинга! -=x[PooH]x=-
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #13 : 11-04-2008 11:48 » 

PooH, ага Улыбаюсь а то я уже перерыл источники разные и никак не могу врубится в синтаксис.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #14 : 11-04-2008 11:56 » 

А я не сталнивался с такой конструкцией : "WHERE IN(SELECT"
Записан

Удачного всем кодинга! -=x[PooH]x=-
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #15 : 11-04-2008 12:06 » 

PooH, не ты правильно написал, между WHERE и IN что то должно быть, но меня смутило не это, а вот это "image_purpose.id_image"
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Arinyshka
Белый клоун, бедный мученик...
Постоялец

by
Offline Offline
Пол: Женский

« Ответ #16 : 11-04-2008 12:13 » 

Arinyshka, вы же говорили что нужна выборка по id_purpose. Еще рекомендую делать проверку на существование пустого поля.
Так оно и дало такой результат Улыбаюсь картинки идут ровно в том порядке, как в Purpose... и только те, которые там встречаются Улыбаюсь Теперь пытаюсь убедить Дельфу, что именно это нам было нужно Улыбаюсь
image_purpose.id_image - меня это не только смутило, но и заставило почитать Улыбаюсь С  Where in я так и не поняла... Ладно, постепенно проникнусь Улыбаюсь
А проверку на пустое поле - это как?
Записан

Непонятная свобода обручем сдавила грудь...
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #17 : 11-04-2008 12:20 » 

SELECT image_purpose,  id_Image, active
  FROM ImageFor
  INNER JOIN Purpose
  ON Purpose.id_image=ImageFor.id_image WHERE ImageFor.id_image IS NOT NULL AND Purpose.id_image IS NOT NULL
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Arinyshka
Белый клоун, бедный мученик...
Постоялец

by
Offline Offline
Пол: Женский

« Ответ #18 : 11-04-2008 12:24 » 

Добавила  Улыбаюсь)
Хорошо с вами... Скромно так... Люблю!
Записан

Непонятная свобода обручем сдавила грудь...
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #19 : 11-04-2008 12:47 » 

Хорошо что все закончилось хорошо =)
я ошибся именно в столбце...
---
необходимость "ImageFor.id_image IS NOT NULL AND Purpose.id_image IS NOT NULL" зависит от СУБД... в некоторых это условие можно вообще не писать в некоторых достаточно только Purpose.id_image IS NOT NULL
Записан

Удачного всем кодинга! -=x[PooH]x=-
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines