Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.12;
Скачать: CL | DM;

Вниз

простой SQL запрос   Найти похожие ветки 

 
sqler   (2008-08-20 20:00) [0]

Доброго времени суток.
SQL -  не знаю :\
Есть две таблицы.

Таблица №1

ID
Gorod
Text

здесь gorod - номер записи из таблицы №2

Таблица №2

ID
Gorod - а здесь название города

........

Нужно выбрать данные из двух таблиц, и на выходе получить:
ID, Gorod (название), text

:)


 
aaaaa   (2008-08-20 21:17) [1]


>  простой SQL запрос

просто так тебе никто на это отвечать не будет.


 
sqler   (2008-08-20 21:18) [2]

Удалено модератором


 
Правильный$Вася   (2008-08-20 21:53) [3]


> здесь gorod - номер записи из таблицы №2

номерами записей SQL не оперирует


 
Ega23 ©   (2008-08-20 22:15) [4]


> SQL -  не знаю :\


Учи. Даю наводку в виде inner join


 
Игорь Шевченко ©   (2008-08-20 22:22) [5]


> SQL -  не знаю :\


Мартин Грубер в помощь - будешь знать


 
Труп Васи Доброго(заб. пароль)   (2008-08-21 11:09) [6]

select Tabl1.ID, Tabl2.Gorod, Tabl1.Text from Tabl1, Tabl2 where Tabl1.Gorod=Tabl2.ID


 
stas ©   (2008-08-21 17:24) [7]

Или так
select Tabl1.ID, Tabl2.Gorod, Tabl1.Text from
Tabl1
INNER JOIN Tabl2 ON Tabl1.Gorod=Tabl2.ID


 
Ega23 ©   (2008-08-21 17:33) [8]


> Труп Васи Доброго(заб. пароль)
> stas ©   (21.08.08 17:24) [7]


А потом он при приёме на работу скажет: "А ещё я знаю SQL". И возбмут его вместо Вас.


 
stas ©   (2008-08-21 20:37) [9]

Ega23 ©   (21.08.08 17:33) [8]
:)
У мня немного другая специализация.


 
oldman ©   (2008-08-22 05:46) [10]

А зачем так сложно?
Сделай Gorod=название в таблице №1 и будет тебе счастье.


 
Sergey13 ©   (2008-08-22 09:03) [11]

> [10] oldman ©   (22.08.08 05:46)

Конечно. Всю БД заколбасить в одну таблицу - и всех делов. 8-)


 
Ega23 ©   (2008-08-22 09:27) [12]


> А зачем так сложно?
> Сделай Gorod=название в таблице №1 и будет тебе счастье.


Читать про нормальные формы.
З.Ы. Я как-то даже не ожидал от тебя, чесслово...


 
oldman ©   (2008-08-22 09:37) [13]


> Sergey13 ©   (22.08.08 09:03) [11]
> Ega23 ©   (22.08.08 09:27) [12]


Да почитайте вы [0].
В таблице 1 поле Gorod уже есть.
На фига туда засовывать ссылку на имя, если можно засунуть само имя?


 
Sergey13 ©   (2008-08-22 09:38) [14]

> [13] oldman ©   (22.08.08 09:37)
> В таблице 1 поле Gorod уже есть.

А если бы это поле называлось Gorod_ID?


 
oldman ©   (2008-08-22 09:41) [15]


> Sergey13 ©   (22.08.08 09:38) [14]


А на фига?
Я понимаю, если бы в связанной таблице куча полей была, а так зачем?

Хотя, может автор не все написал. Тогда пардоньте.


 
Ega23 ©   (2008-08-22 09:45) [16]


> Да почитайте вы [0].
> В таблице 1 поле Gorod уже есть.
> На фига туда засовывать ссылку на имя, если можно засунуть
> само имя?


Кто тебе сказал, что это ссылка на имя? То, что они одинаково называются?


 
Sergey13 ©   (2008-08-22 09:50) [17]

> [15] oldman ©   (22.08.08 09:41)
> а так зачем?

За тем, что таблице1 может быть миллионы записей, а в таблице2 несколько десятков.
Ты справочники не уважаешь? 8-)


 
oldman ©   (2008-08-22 09:51) [18]


> Ega23 ©   (22.08.08 09:45) [16]
>
> > Да почитайте вы [0].
> > В таблице 1 поле Gorod уже есть.
> > На фига туда засовывать ссылку на имя, если можно засунуть
>
> > само имя?
>
>
> Кто тебе сказал, что это ссылка на имя?


Олег, не прикалывайся. В [0]


> Таблица №1
>
> ID
> Gorod
> Text
>
> здесь gorod - номер записи из таблицы №2


 
oldman ©   (2008-08-22 09:53) [19]


> Sergey13 ©   (22.08.08 09:50) [17]
> За тем, что таблице1 может быть миллионы записей, а в таблице2
> несколько десятков.


А таблицу 2 при анализе таблицы 1 тогда можно было бы исключить.
Для ввода данных справочник нужен. Но заносить в таблицу 1 можно не номер записи, а сразу имя.


 
Ega23 ©   (2008-08-22 09:54) [20]


> Олег, не прикалывайся. В [0]


А я и не прикалываюсь.
номер записи из таблицы №2
Есть стойкое подозрение, что это Table2.ID
причём заметь - не у меня одного.  :)


 
oldman ©   (2008-08-22 09:56) [21]

В общем, у нас разные подходы к использованию справочников
:)


 
Ega23 ©   (2008-08-22 09:58) [22]


> Для ввода данных справочник нужен. Но заносить в таблицу
> 1 можно не номер записи, а сразу имя.


Смотри. Городов - 100 (условно). Записей - миллион (тоже условно).
Определив городу ID : smallint мы получаем в рабочей таблице всего 2 байта. Средняя длина названия города ~ 7 символов. Т.е. 5.000.000 байт экономии тупо на размере.
Дальше. Мне нужно отобрать все данные из рабочей таблицы, where Gorod="Хобаровзг". Тебе надо напоминать, как сравнение строк идёт? А всего 2 байта сравнить? Это на порядки быстрее.


 
Ega23 ©   (2008-08-22 09:59) [23]


> В общем, у нас разные подходы к использованию справочников


У меня складывается впечатление, что у тебя проблемы с пониманием основ нормализации реляционных баз данных.


 
Sergey13 ©   (2008-08-22 10:01) [24]

> [19] oldman ©   (22.08.08 09:53)
> Но заносить в таблицу 1 можно не номер записи, а сразу имя.

Например:
Питер
СПб
Санкт-Петербург
Санкт Петербург
Петербург
Ленинград
Город на Неве


 
oldman ©   (2008-08-22 10:02) [25]


> Ega23 ©   (22.08.08 09:58) [22]


Я работаю с объемами 100-300 тысяч записей.
Тормозов не ощущаю.
Места мне не жалко.
Зато встав на запись N в таблице 1 я сразу вижу имя города. Не связываясь со справочником.


 
oldman ©   (2008-08-22 10:04) [26]


> Sergey13 ©   (22.08.08 10:01) [24]


Батенька, имя выбирается как-раз из справочника.
Вносится в БД и больше мы тот справочник не трогаем.


> Ega23 ©   (22.08.08 09:59) [23]


Сейчас я обсуждаю конкретный пример с таблицами 1 и 2 из [0]


 
Ega23 ©   (2008-08-22 10:05) [27]


> Зато встав на запись N в таблице 1 я сразу вижу имя города.
>  Не связываясь со справочником.


Ну-ну.


 
Ega23 ©   (2008-08-22 10:07) [28]


> Сейчас я обсуждаю конкретный пример с таблицами 1 и 2 из
> [0]


Я тебе по этому конкретному примеру и привёл данные.
Объединяем всё в одну таблицу. Теперь ищем город "Хобаровзг".
А ещё, при вводе новой записи, хотим видеть комбик с существующими городами.
Что, каждый раз select distitct Gorod from table делать???


 
oldman ©   (2008-08-22 10:11) [29]


> Ega23 ©   (22.08.08 10:07) [28]
> Что, каждый раз select distitct Gorod from table делать?


Я делал по-другому, не суть...

Тем более, что по [0] поиск идет не по имени города, а по ID (зачем-то он в таблице 1 присутствует)
Поэтому "здесь gorod - номер записи из таблицы №2" все таки номер записи, как это не прискорбно...


 
oldman ©   (2008-08-22 10:12) [30]

ХОЧУ УСЛЫШАТЬ АВТОРА ТОПИКА!!!


 
Sergey13 ©   (2008-08-22 10:12) [31]

> [26] oldman ©   (22.08.08 10:04)

Ну заведи в справочник город в котором я живу - Иваново - только не забудь указать какой именно населенный пункт ты имеешь в виду.
На картах на mail.ru я насчитал 7 штук которые называются просто Иваново + 5 штук с добавлениями типа "Красное Иваново     Республика Марий Эл респ., Горномарийский район район "


 
Труп Васи Доброго ©   (2008-08-22 10:13) [32]

Блин, вот так и узнаёшь, что "нормальные герои всегда идут в обход"
Ладно, пусть ты считаешь что все вокруг идиоты и нормализацию придумали от нефиг делать.
НО зачем создавать себе лишние проблемы? А вот переименуют город и что? Тебе придётся во всех таблицах, где ты "просто вставил имя" искать это старое имя и заменять его на новое. Не проще ли оставить ID и не париться с изменением имени?
Прще говоря - читай про нормализацию, там много аргументов приведено.


 
oldman ©   (2008-08-22 10:20) [33]


> Sergey13 ©   (22.08.08 10:12) [31]
> Труп Васи Доброго ©   (22.08.08 10:13) [32]


Имхо, зависит от задачи.
Я писал программу, где было НЕОБХОДИМО при смене справочника оставить старые данные в ранее заполненных записях.


 
stas ©   (2008-08-22 10:21) [34]

oldman ©   (22.08.08 10:12) [30]
Ты что-то путаешь, в [0] представлена обычная реляционная структура, от которой никуда не дется при работе с БД.


 
Ega23 ©   (2008-08-22 10:23) [35]


> Я писал программу, где было НЕОБХОДИМО при смене справочника
> оставить старые данные в ранее заполненных записях.


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

Только к нормализации это вообще никакого отношения не имеет. Абсолютно.


 
Sergey13 ©   (2008-08-22 10:24) [36]

> [33] oldman ©   (22.08.08 10:20)

И я такие задачи писал. С помошью справочника. Просто там справочник немного усложняется.


 
oldman ©   (2008-08-22 10:26) [37]


> Ega23 ©   (22.08.08 10:23) [35]


Попрошу не передергивать. Цена не из справочника берется.
А вот если название товара сменилось - другое дело.


 
oldman ©   (2008-08-22 10:27) [38]


> Sergey13 ©   (22.08.08 10:24) [36]


Извини, [33] относилось только к [32]


 
zdm ©   (2008-08-22 10:29) [39]

прикольно :) вопрос был о том как связать пару табличек, а целая эпопея получилась :)


 
oldman ©   (2008-08-22 10:34) [40]


> zdm ©   (22.08.08 10:29) [39]


Хорошим (я надеюсь) знакомым иногда так надо понаезжать друг на друга...

:)



Страницы: 1 2 вся ветка

Текущий архив: 2008.10.12;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.023 c
2-1220338737
Сергей
2008-09-02 10:58
2008.10.12
Как увеличить высоту ComboBox?


15-1219352572
Германн
2008-08-22 01:02
2008.10.12
Вопрос к тем, кому за 50


6-1194345147
SpellCaster
2007-11-06 13:32
2008.10.12
Время ожидания коннекта сокетом при недоступной сети


2-1220459844
Mariks
2008-09-03 20:37
2008.10.12
InternetOpenURL


2-1220207979
fog
2008-08-31 22:39
2008.10.12
MD5 и CryptoAPI