Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL запрос


ice321 ©   (2006-09-12 13:26:00) 

Здравствуйте.
У меня такая проблемма, при ваполнении такого SQL запроса:
select rusname, name from goods where name = ( select model from transfer where name like '#%')

BDE мне пишет "Single row subquery produced more than one row.",
подскажите мне как его модифицировать что бы не было такой ошибки.
Заранее спасибо.


Anatoly Podgoretsky   (2006-09-12 18:38:00) [1]

Или наоборот ходить в малиновых штанах.


Sergey13   (2006-09-12 15:40:00) [2]

С такими "штанами" и без штанов можно остаться. 8-)


evvcom   (2006-09-12 15:36:00) [3]

> первые четыре цыфры

1. 4 или 5?
2. Эти 4 (5) цифр уникальны? Т.е. они однозначно идентифицируют запись в goods?
3. Возьми себе за правило в табличках создавать ключевые поля. Это нужно в большинстве случаев. Когда ключи не нужны, случаи такие очень редки. Пока не наработаешь себе нужный опыт, создавай везде.
4. Почитай про нормализацию таблиц. В частности про 3 нормальную форму.


ice321   (2006-09-12 15:25:00) [4]

Извени,  было #####    23456 22 22 NN T, стало штаны 23456 22 22 NN T,
первые четыре цыфры совпадают вот по ним я и хочу сравнивать где заменять.


evvcom   (2006-09-12 15:20:00) [5]

Не УГУ, а я спрашиваю на что?


ice321   (2006-09-12 15:14:00) [6]

УГУ


evvcom   (2006-09-12 15:07:00) [7]

> [11] ice321 ©   (12.09.06 15:00)

Ну и на что должно поменяться твоя строка
transfer
name model
штаны    23467  23 43WT K ?


ice321   (2006-09-12 15:00:00) [8]

Значания transfer.name  и goods.rusname, повторяются.
Т.е. вот
        transfer                            goods
 name      model                     rusname    name          
#####    23456 22 22 NN T              штаны      23456 23 23NN T
штаны    23467  23 43WT K             штаны       234467 23 43 WT K
куртка   34488 22 34 TT G      
куртка   35678 34 55TR L    

Вот мне и нужен такой запрос чтоб в поле name из таблицы transfer заменялось соответственно значению из поля rusname из таблицы goods.


ice321   (2006-09-12 14:50:00) [9]

Задча такая нужно в таблице transfer поменять значения поля name, а вот значение поля name ищем из таблицы goods там оно соответствует полю rusname, так вот я ищу эти значения по полям transfer.model=goods.name, но что ни чего ни выходит.


evvcom   (2006-09-12 14:50:00) [10]

> [7] ice321 ©   (12.09.06 14:25)

Если ты точно знаешь"что поле name в таблице goods соответсвует полю model из таблицы transfer", то
нафига тебе вообще эта transfer?
select rusname, name from goods where name like '#%'
разве не это тебе надо?


Sergey13   (2006-09-12 14:36:00) [11]

> [7] ice321 ©   (12.09.06 14:25)

Если ты точно знаешь"что поле name в таблице goods соответсвует полю model из таблицы transfer", то зачем усекать что-то? Если же они НЕ соответствуют по каким либо критериям, то как ты их вообще сравниваешь?

Сравнивать по наименованию - это вообще не есть хорошо.


ice321   (2006-09-12 14:25:00) [12]

При выполнении вот этого запроса
select rusname, name from goods where name in ( select model from transfer where name like '#%')
он мне ни чего не выводит, хотя я точно знаю что поле name в таблице goods
соответсвует полю model из таблицы transfer.
Я думаю что надо урезать поле name из goods что бы он сравнивал только по цифрам, может он по этому и не выводит?


DESDECHADO   (2006-09-12 13:59:00) [13]

не понял, что нужно
x LIKE '345215%'
или
substr


zdm   (2006-09-12 13:55:00) [14]

а прости это не sql


zdm   (2006-09-12 13:54:00) [15]

function FN_Detect_For_Tree(const sss: string;s_pid:integer): string;
var
I: Integer;
begin
       I :=  LastDelimiter(' ', sss);


Sergey13   (2006-09-12 13:53:00) [16]

> [2] ice321 ©   (12.09.06 13:45)

Все возможности SQL, для твоего случая, описаны в Localsql.hlp


ice321   (2006-09-12 13:45:00) [17]

Спасибо.
А существует ли в SQL оператор который бы в столбце выбирал бы первую часть занчания. Например в столбце значение '345215 NN W 45', мне нужно только 345215.


Loginov Dmitry   (2006-09-12 13:27:00) [18]

name in


Наверх

Титульная страница Поиск, карта сайта Написать письмо