![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверка одинаковых значений в таблице [D7, XP]
TimScorp © (2006-03-22 05:50:00)Доброго времени суток!!!
Как можно проверить есть ли в таблице в Acess поля с одинаковыми значениями, вывести их форму и чтобы не было зеркального отображения???
С уважением TimScorp.
SergP. (2006-03-22 18:18:00) [1]
SELECT a.name2, a.adres, b.name, b.adres
FROM (SELECT min(name) as name2, adres
FROM tbl
GROUP BY adres
HAVING count(*)>1) AS a, tbl AS b
WHERE a.adres=b.adres and a.name2<>b.name
Sergey13 (2006-03-22 13:29:00) [2]2[8] TimScorp © (22.03.06 09:52)
Над запросом мне думать лень, но тебе необходимо как то выделить одного из "похожих" например по MIN(ID). И к нему уже пристегивать остальных.
Virgo_Style (2006-03-22 13:23:00) [3]Ну если нужен только Иванов, так и выбери только его, в чем проблема?)
ivb2001 (2006-03-22 12:20:00) [4]Может в AddressTBL добавить ORDER by NAME? тогда будут сначала все Ивановы потом Петровы и тд
TimScorp (2006-03-22 09:52:00) [5]Получается так:
Иванов, Адрес: ул. Мира, д. 5, кв. 49 - Петров, Адрес: ул. Мира, д. 5, кв. 49
Иванов, Адрес: ул. Мира, д. 5, кв. 49 - Сидоров, Адрес: ул. Мира, д. 5, кв. 49
Петров, Адрес: ул. Мира, д. 5, кв. 49 - Сидоров, Адрес: ул. Мира, д. 5, кв. 49
А нужно чтобы выводило только:
Иванов, Адрес: ул. Мира, д. 5, кв. 49 - Петров, Адрес: ул. Мира, д. 5, кв. 49
Иванов, Адрес: ул. Мира, д. 5, кв. 49 - Сидоров, Адрес: ул. Мира, д. 5, кв. 49
С уважением TimScorp.
Virgo_Style (2006-03-22 07:55:00) [6]... WHERE A.ID>B.ID ?
TimScorp (2006-03-22 07:35:00) [7]Нужно что бы выводило только:
Иванов, Адрес: ул. Мира, д. 5, кв. 49 - Петров, Адрес: ул. Мира, д. 5, кв. 49
Иванов, Адрес: ул. Мира, д. 5, кв. 49 - Сидоров, Адрес: ул. Мира, д. 5, кв. 49
и все. Как исключить зеркальную проверку???
С уважением TimScorp.
TimScorp (2006-03-22 07:33:00) [8]DM.AdresTbl.First;
while not DM.AdresTbl.Eof do
begin
s := QuotedStr ('%'+DM.AdresTblAdres.Text+'%');
s1 := DM.AdresTblLinkKey.AsString;
DM.AdresQ.Active := false;
DM.AdresQ.SQL.Clear;
DM.AdresQ.SQL.Add('SELECT *');
DM.AdresQ.SQL.Add('FROM adr');
DM.AdresQ.SQL.Add('WHERE Adres LIKE ' + s);
DM.AdresQ.SQL.Add('AND LinkKey ' + s1);
DM.AdresQ.Active := true;
DM.AdresQ.First;
while not DM.AdresQ.Eof do
begin
RichEdit1.Lines.Add(DM.AdresTblName.Text + ', Àäðåñ: ' + DM.AdresTblAdres.Text + ' - ' +
DM.AdresQName.Text + ', Àäðåñ: ' + DM.AdresQAdres.Text);
DM.AdresQ.Next;
end;
DM.AdresTbl.Next;
end;
ЮЮ (2006-03-22 07:26:00) [9]
> То результат будет таким:
Результат чего? Запроса? Вот и прведи его текст - покритикуем
И структуру таблицы. Или там только два поля?
И какой результат нужен?
TimScorp (2006-03-22 05:59:00) [10]Петров, Адрес: ул. Мира, д. 5, кв. 49 - Сидоров, Адрес: ул. Мира, д. 5, кв. 49
Сидоров, Адрес: ул. Мира, д. 5, кв. 49 - Иванов, Адрес: ул. Мира, д. 5, кв. 49
Сидоров, Адрес: ул. Мира, д. 5, кв. 49 - Петров, Адрес: ул. Мира, д. 5, кв. 49
Как можно сделать чтобы писалось только один раз??? (Т.е. не было зеркального отображения)
С уважением TimScorp.
TimScorp (2006-03-22 05:58:00) [11]То результат будет таким:
Иванов, Адрес: ул. Мира, д. 5, кв. 49 - Петров, Адрес: ул. Мира, д. 5, кв. 49
Иванов, Адрес: ул. Мира, д. 5, кв. 49 - Сидоров, Адрес: ул. Мира, д. 5, кв. 49
Петров, Адрес: ул. Мира, д. 5, кв. 49 - Иванов, Адрес: ул. Мира, д. 5, кв. 49
TimScorp (2006-03-22 05:56:00) [12]Например:
Теперь если в таблице данные типа:
Иванов ул. Мира, д. 5, кв. 49
Петров ул. Мира, д. 5, кв. 49
Сидоров ул. Мира, д. 5, кв. 49