Форум: "Прочее";
Текущий архив: 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