Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];

Вниз

простой 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.046 c
2-1219920043
biver64
2008-08-28 14:40
2008.10.12
Удаление файла


15-1219218004
sD
2008-08-20 11:40
2008.10.12
Работа с dxBarManager (DevExpress)


2-1220106974
Alral
2008-08-30 18:36
2008.10.12
Функция Recv и PChar


2-1220467385
Виталий_д
2008-09-03 22:43
2008.10.12
TTreeView.CustomSort


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский