как бы запрос сделать
От: ironwit Украина  
Дата: 21.06.04 06:53
Оценка:
Есть таблица
field1 данные
field2 код записи
num autoinc

В таблице данные хранятся так сказать по записям, то есть. предположим необходимо ввести в БД запись Фамилия, имя отчество.
Реально вводиться в татлицу 3 строки

таблица
field1 field2 num
Фамилия 1 1
Имя 1 2
Отество 1 3

Как бы теперь это отобразить в запросе как
Запись ФИО
1 Фамилия Имя отчество

Если сумбурно спросил, учтоняйте


Заранее спасибо
... << Rsdn@Home 1.1.4 beta 1 >>
Я не умею быть злым, и не хочу быть добрым.
Re: как бы запрос сделать
От: Softwarer http://softwarer.ru
Дата: 21.06.04 07:00
Оценка:
Здравствуйте, ironwit, Вы писали:

I>Как бы теперь это отобразить в запросе как

I>1 Фамилия Имя отчество

Правильный ответ — переделать схему; она, мягко говоря, неудачна. А так —

select
  coalesce (families.value, '???' ) || ' '
  coalesce (names.value,    '???' ) || ' '
  coalesce (surnames.value, '???' ) as fio
from
  (select * from names where typ = 1 and id = :id) families,
  (select * from names where typ = 2 and id = :id) names,
  (select * from names where typ = 3 and id = :id) surnames
Re: как бы запрос сделать
От: CheG Россия  
Дата: 21.06.04 07:00
Оценка:
Здравствуйте, ironwit, Вы писали:

м-мм интересно как ты различаешь где фамилия, а где отчество??? Или считается, что первым обязательно идет имя, потом фамилия и тд???
Re[2]: как бы запрос сделать
От: Softwarer http://softwarer.ru
Дата: 21.06.04 07:02
Оценка:
Здравствуйте, Softwarer, Вы писали:

Да, поправка — еще надо outer join добавить, на случай, если какого-то элемента имени нет в базе.
Re[2]: как бы запрос сделать
От: ironwit Украина  
Дата: 21.06.04 07:10
Оценка:
Здравствуйте, CheG, Вы писали:

CG>Здравствуйте, ironwit, Вы писали:


CG>м-мм интересно как ты различаешь где фамилия, а где отчество??? Или считается, что первым обязательно идет имя, потом фамилия и тд???


да нет, там еще в таблице для каждого свой код есть, для которого в еще одной таблице есть текстовое наименование что это. Юзер выбирает себе наименование отчета, по номеру отчета выбираются все его составляющие и заполняются данными. В теории, пока такое только реализовываю...
... << Rsdn@Home 1.1.4 beta 1 >>
Я не умею быть злым, и не хочу быть добрым.
Re[2]: как бы запрос сделать
От: ironwit Украина  
Дата: 21.06.04 07:10
Оценка:
Здравствуйте, Softwarer, Вы писали:

S>Здравствуйте, ironwit, Вы писали:


I>>Как бы теперь это отобразить в запросе как

I>>1 Фамилия Имя отчество

S>Правильный ответ — переделать схему; она, мягко говоря, неудачна.

как? Если необходимо хранить данные, про которые я заранее ничего не знаю. ФИО только для примера, а так может быть все что угодно... Hk.c надо дать возможность юзеру создавать свои наборы данных.

S>А так -


S>
S>select
S>  coalesce (families.value, '???' ) || ' '
S>  coalesce (names.value,    '???' ) || ' '
S>  coalesce (surnames.value, '???' ) as fio
S>from
S>  (select * from names where typ = 1 and id = :id) families,
S>  (select * from names where typ = 2 and id = :id) names,
S>  (select * from names where typ = 3 and id = :id) surnames
S>


Попробую...
... << Rsdn@Home 1.1.4 beta 1 >>
Я не умею быть злым, и не хочу быть добрым.
Re[3]: как бы запрос сделать
От: Softwarer http://softwarer.ru
Дата: 21.06.04 07:18
Оценка:
Здравствуйте, ironwit, Вы писали:

S>>Правильный ответ — переделать схему; она, мягко говоря, неудачна.

I>как? Если необходимо хранить данные, про которые я заранее ничего не знаю. ФИО только для примера, а так может

Зависит от задачи. Когда у меня в последний раз появилась такая необходимость, я просто дал пользователю инструмент создания и заполнения таблиц (естественно, со скрытыми техническими деталями), и, соответственно, пользовался метаинформацией оракла для интерфейса — например, введенное пользователем имя колонки хранилось в user_col_comments, откуда выводилось в интерфейс и откуда бралось реальное имя колонки для формирования sql.
Re[4]: как бы запрос сделать
От: ironwit Украина  
Дата: 21.06.04 07:23
Оценка:
Здравствуйте, Softwarer, Вы писали:

S>Здравствуйте, ironwit, Вы писали:


S>>>Правильный ответ — переделать схему; она, мягко говоря, неудачна.

I>>как? Если необходимо хранить данные, про которые я заранее ничего не знаю. ФИО только для примера, а так может

S>Зависит от задачи. Когда у меня в последний раз появилась такая необходимость, я просто дал пользователю инструмент создания и заполнения таблиц (естественно, со скрытыми техническими деталями), и, соответственно, пользовался метаинформацией оракла для интерфейса — например, введенное пользователем имя колонки хранилось в user_col_comments, откуда выводилось в интерфейс и откуда бралось реальное имя колонки для формирования sql.


у меня mysql, но хотелось бы все эт ореализовать как можно ближе к стандартному SQL, дабы облегчить перехеод с БД на БД.
... << Rsdn@Home 1.1.4 beta 1 >>
Я не умею быть злым, и не хочу быть добрым.
Re[3]: как бы запрос сделать
От: CheG Россия  
Дата: 21.06.04 07:28
Оценка:
Ну если это Оракл, то всё упрощается... Я бы сделал в этом случае три хранимые процедуры для извлечения Имени, Фамилии и Отества или пустые строки в случае отчутсвия онных, потом выборка типа

select
schema.package.proc1(table.cod) as name1,
schema.package.proc2(table.cod) as name2,
schema.package.proc3(table.cod) as name3
from schema.table where cod=in_cod

даёт искомый результат...
Re[5]: как бы запрос сделать
От: CheG Россия  
Дата: 21.06.04 07:30
Оценка:
Здравствуйте, ironwit, Вы писали:



I>у меня mysql, но хотелось бы все эт ореализовать как можно ближе к стандартному SQL, дабы облегчить перехеод с БД на БД.


С mysql конечно сложнее, может проще вытащить 3 курсора и потом связать их уже в интерфейсе???
Re[5]: как бы запрос сделать
От: Softwarer http://softwarer.ru
Дата: 21.06.04 07:38
Оценка: +1
Здравствуйте, ironwit, Вы писали:

I>у меня mysql, но хотелось бы все эт ореализовать как можно ближе к стандартному SQL, дабы облегчить перехеод с БД на БД.


Хм. Как бы Вам сказать, Вы уже взялись за задачу, несколько превосходящую Ваши текущие знания. Я бы посоветовал Вам не усложнять ее еще больше размышлениями о нескольких серверах — это весьма сложная задача сама по себе. Более насущная задача — сделать программу хотя бы на MySQL так, чтобы сервер выдержал несколько десятков/сотен сложных запросов одновременно.
Re[4]: как бы запрос сделать
От: ironwit Украина  
Дата: 21.06.04 08:33
Оценка:
Здравствуйте, CheG, Вы писали:

CG>Ну если это Оракл, то всё упрощается... Я бы сделал в этом случае три хранимые процедуры для извлечения Имени, Фамилии и Отества или пустые строки в случае отчутсвия онных, потом выборка типа


mysql, но вообще стремлюсь к ANSI SQL
... << Rsdn@Home 1.1.4 beta 1 >>
Я не умею быть злым, и не хочу быть добрым.
Re[6]: как бы запрос сделать
От: ironwit Украина  
Дата: 21.06.04 08:33
Оценка:
Здравствуйте, Softwarer, Вы писали:

S>Здравствуйте, ironwit, Вы писали:


I>>у меня mysql, но хотелось бы все эт ореализовать как можно ближе к стандартному SQL, дабы облегчить перехеод с БД на БД.


S>Хм. Как бы Вам сказать, Вы уже взялись за задачу, несколько превосходящую Ваши текущие знания. Я бы посоветовал Вам не усложнять ее еще больше размышлениями о нескольких серверах — это весьма сложная задача сама по себе. Более насущная задача — сделать программу хотя бы на MySQL так, чтобы сервер выдержал несколько десятков/сотен сложных запросов одновременно.


да там не планируется пока и нескольких десятков. Максимум это два-три в единицу времени.
... << Rsdn@Home 1.1.4 beta 1 >>
Я не умею быть злым, и не хочу быть добрым.
Re[6]: как бы запрос сделать
От: ironwit Украина  
Дата: 21.06.04 08:43
Оценка:
Здравствуйте, Softwarer, Вы писали:


S>Хм. Как бы Вам сказать, Вы уже взялись за задачу, несколько превосходящую Ваши текущие знания.


Нуууу, вот это как раз не страшно. Как мы еще учится то могем?
... << Rsdn@Home 1.1.4 beta 1 >>
Я не умею быть злым, и не хочу быть добрым.
Re[7]: как бы запрос сделать
От: Softwarer http://softwarer.ru
Дата: 21.06.04 08:44
Оценка:
Здравствуйте, ironwit, Вы писали:

I>да там не планируется пока и нескольких десятков. Максимум это два-три в единицу времени.


"Замужество, моя милая, не планируется; оно случается"

Смена (тем более, регулярная) БД — куда менее вероятный вариант, чем увеличение нагрузки. Собственно, любую программу, которая хоть чего-то стоит, тут же начинают нагружать по полной — это нормально.
Re[7]: как бы запрос сделать
От: Softwarer http://softwarer.ru
Дата: 21.06.04 08:51
Оценка:
Здравствуйте, ironwit, Вы писали:

S>>Хм. Как бы Вам сказать, Вы уже взялись за задачу, несколько превосходящую Ваши текущие знания.

I>Нуууу, вот это как раз не страшно. Как мы еще учится то могем?

На это есть много ответов, в частности, небезызвестная фраза Моцарта: "Да, я в шесть лет написал симфонию. Но я ни у кого не спрашивал, как их писать".

Насчет страшного — варианты есть разные. Вопрос в том, что усложнять эту задачу дальше уже не стоит; при этом не будет ничего, кроме катастрофического роста вероятности сделать плохо.
Re: как бы запрос сделать
От: Sinclair Россия https://github.com/evilguest/
Дата: 22.06.04 03:55
Оценка:
Здравствуйте, ironwit, Вы писали:

Ты здесь читал?
... << RSDN@Home 1.1.4 beta 1 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.