![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите составить запрос [D7, dBase, FoxPro]
Dell3r © (2005-07-01 13:19:00)На форме компоненты:
Query - DataSource - DBGrid;
Table1 - DataSource1 - DBGrid1;
Table2 - DataSource2;
Свойства Query:
SQL - 'Select * from Name'
Свойства Table1:
MasterSource - DataSource
IndexName - NameNo
MasterFields - NameNo
TableName - Phone.dbf
Свойства Table2:
TableName - Phone.dbf
Номера телефонов записываются в таком виде:
0955552265
8482225891
Нужно в Table2 найти все записи в которых первые несколько цифр совпадают с введенными пользователем.(Значания могут быть и 10-значными цифрами, например все записи в которых код города равен 095, Потом в каждой похожей записи вернуть значание NameNo.
В результате в Query ввести запрос типа:
Query.Sql.Add('Select * from NAME Where NAMENO='+'А вот здесь все NameNo из Table2').
Заранее благодарен.
Dell3r (2005-07-01 14:25:00) [1]Не смешно. Я с базами не так уж и давно работаю. к тому же учусь сам. Поэтому и прошу помощи
Sergey13 (2005-07-01 14:19:00) [2]2 [9] Dell3r © (01.07.05 14:14)
Тогда надо программиста звать.
Dell3r (2005-07-01 14:14:00) [3]Что-то не так.
select t2.NameNo, t2.Name
В таблице2 нету поля Name
Если в таблице Phone есть значения начинающиеся на 095, то из таблицы Name выбрать все записи в которых ТаблицаName.NameNo = ТаблицеPhone.NameNo
Dell3r (2005-07-01 13:59:00) [4]Он у меня ругается на знак "="
evvcom (2005-07-01 13:54:00) [5]
> что такое t2
Это псевдоним Table2. См. внимательнее текст запроса.
Dell3r (2005-07-01 13:51:00) [6]Danilka © (01.07.05 13:38) [4]
Немного не понял
select t2.NameNo - что такое t2
Danilka (2005-07-01 13:38:00) [7]Dell3r © (01.07.05 13:30)
во второй таблице два столбца NameNo и Telefon
В первой NameNo и Name
Так вот надо найти все "095" во второй и если такие есть, то их NameNo Перечислить в Query
select t2.NameNo, t2.Name from table1 t1, table2 t2 where t1.NameNo = t2.NameNo and t2.Telefon like '8482%'
:)
evvcom (2005-07-01 13:38:00) [8]
select n.* from Name n inner join Table2 t2 on t2.NameNo = n.NameNo where t2.NameNo Like :NameNo
Потом в Delphi: Query.ParamByname('NameNo').AsString := '%' + Edit1.Text + '%'; // Если "содержит"
и
.AsString := Edit1.Text + '%'; // Если "начинается с"
Dell3r (2005-07-01 13:30:00) [9]во второй таблице два столбца NameNo и Telefon
В первой NameNo и Name
Так вот надо найти все "095" во второй и если такие есть, то их NameNo Перечислить в Query
evvcom (2005-07-01 13:30:00) [10]
> например все записи в которых код города равен 095
Если у тебя нет поля "код города", то твоя задача невыполнима, потому что длина кода города в общем случае - величина переменная. Другое дело, если ты сформулируешь условие так: "все записи, начинающиеся (или содержащие) строку '095'". Тогда см. [1].
Sergey13 (2005-07-01 13:25:00) [11]А почему не выкинуть все твои навороты и не написать
'Select * from NAME Where NAMENO Like '%095'