SQL в Visual Fox v9 | |
---|---|
Leffurt Автор Сообщений: 33 Дата регистрации: 15.06.2015 |
Здравствуйте.
Не могу сообразить как составить запрос, чтобы на выходе получилось как на картинке. Суть: есть таблица в которой два столбца связаны жёстко, то есть, например не может быть камень быть и жидкостью и твёрдым телом (это так, чтобы понятнее было, на самом деле там совсем другая тема и не так однозначно само сопоставление). Вот надо выявить ошибки, то есть вывести на экран только те записи, где имеется несколько разных состояний у одного объекта. При малом количестве данных достаточно вывести на экран SELECT DISTINCT object, st_of_agg FROM users_po, но данных намного больше и хотелось бы откинуть те записи, где объект имеет всего одно состояние. Подсчёт количества записей в группе не помогает, так как правильных записей может быть несколько, а различаться записи могут по другим параметрам (столбцам). Опыта по составлению SQL-запросов практически нет, ранее требовались только простенькие запросы. |
Re: SQL в Visual Fox v9 | |
---|---|
boba Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
что-то типа having count(*)>1 по группе полей,
где не должно быть дублей Если более сложное сравнение, всегда в запросе можно открыть таблицу дважды, и сравнивать ее саму с собой from tablename a, tablename b |
Re: SQL в Visual Fox v9 | |
---|---|
Leffurt Автор Сообщений: 33 Дата регистрации: 15.06.2015 |
Вот у меня-то и не получается составить правильно запрос. По количеству в группе больше 1 записи никак не получиться, так как в любой группе может быть больше 1 записи. Тут как-то надо сравнить количество записей в группе только по одному полю поле1 и количество в группе поле1+поле2 должно совпадать, вывести нужно только те группы где это количество не совпадает.
|
Re: SQL в Visual Fox v9 | |
---|---|
PaulWist Сообщений: 14621 Дата регистрации: 01.04.2004 |
1. Написать скрипты таблиц.
2. Написать скрипты заполнения таблиц данными. 3. Написать, какой нужен результат. PS всем лень это делать самостоятельно, помогите себе сами и участникам форума. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: SQL в Visual Fox v9 | |
---|---|
Leffurt Автор Сообщений: 33 Дата регистрации: 15.06.2015 |
На входе, например, таблица in_dbf.dbf, а на выходе должна получиться out_dbf.dbf
|
Re: SQL в Visual Fox v9 | |
---|---|
Владимир Максимов Сообщений: 14100 Откуда: Москва Дата регистрации: 02.09.2000 |
Есть фича для опции DISTINCT внутри агрегирующей функции COUNT()
В таком синтаксисе получите список объектов, у которых есть больше одного уникального состояния. Записи с одинаковым состоянием считаются как 1. Дальше отдельные запросы по этим объектам и смотрите, в чем там дело Но, в общем случае, если количество записей очень велико, то для корректного анализа, нужно еще где-то иметь список допустимых состояний объектов. Тогда можно будет сделать сравнение списков и отобразить только те записи, которые имеют недопустимые комбинации. |
Re: SQL в Visual Fox v9 | |
---|---|
Leffurt Автор Сообщений: 33 Дата регистрации: 15.06.2015 |
Visual Foxpro v.9.0 ругается на первый DISTINCT. Пишет: SQL: DISTINCT is invalid.
У меня получился требуемый результат, но хотелось бы освоить это при помощи одной команды SELECT, а не трёх:
Исправлено 2 раз(а). Последнее : Leffurt, 09.04.21 16:13 |
Re: SQL в Visual Fox v9 | |
---|---|
PaulWist Сообщений: 14621 Дата регистрации: 01.04.2004 |
Примерно так.
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 1 раз(а). Последнее : PaulWist, 09.04.21 16:51 |
Re: SQL в Visual Fox v9 | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
------------------ WBR, Igor |
Re: SQL в Visual Fox v9 | |
---|---|
Leffurt Автор Сообщений: 33 Дата регистрации: 15.06.2015 |
Спасибо! Всё получилось!
|
© 2000-2024 Fox Club  |