![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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