Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Вниз

SQL запрос   Найти похожие ветки 

 
Abcdef123   (2007-03-01 09:48) [0]

Приветствую мастеров.
Сразу прошу прощения, знаю, что тупо задавать такой примитивный вопрос, сама знала как делать, да забыла.
Как будет выглядеть SQL  запрос к таблице на проверку уникальности данных 2х полей. То есть, на каджое значение поле1, должно быть только одно значение в поле2. У меня есть данные в этой таблице, и я не уверена, что там нет записей типа
запись 1
Значение поле1 = Т1, поле2=100
запись2
Значение поле1 = Т1, поле2=200
То есть мне надо написать SQL запрос, который выдал бы неуникальные записи, если таковые есть


 
Sergey13 ©   (2007-03-01 09:54) [1]

distinct совместно с count помогут подтвердить или опровергнуть сомнения. Уникальный индекс на эти два поля позволит гарантировано защититься от этой угрозы в будущем. Кстати, ощибка при создании такого индекса так же является подтвержеднием наличия дубликатов.

ЗЫ:
> Ни D6 ни XP SQL не понимают. Это к тому, что недурно бы СУБД указывать.


 
ЮЮ ©   (2007-03-01 09:59) [2]


> То есть, на каджое значение поле1, должно быть только одно
> значение в поле2.

Значит ещё и структура спроектирована неправильно


 
Ega23 ©   (2007-03-01 10:03) [3]

Убъявляем поля 1 и 2 составным первичным ключом.
Ну или действительно индекс накладываем.


 
Abcdef123   (2007-03-01 15:17) [4]

to [1] недурно бы СУБД указывать.
СУБД Advantage (обычные dbf файлы с cdx индексным файлом
to [2] Значит ещё и структура спроектирована неправильно
Я только что поступила на эту работу и вот пытаюсь разобраться в достоверности данных. Поэтому мне нужен просто SQL запрос, чтоб проверить существующие данные.
To есть мой вопрос, как прописать
Select поле1, поле2 from tbl_1 where ....????????


 
Sergey13 ©   (2007-03-01 15:19) [5]

> Поэтому мне нужен просто SQL запрос

Я же тебе дал ключевые слова для поиска. За полдня могла бы и поискать.


 
Johnmen ©   (2007-03-01 16:13) [6]


> Sergey13 ©   (01.03.07 15:19) [5]
> За полдня могла бы и поискать.

Ей некогда - работать надо :)


 
Abcdef123   (2007-03-01 16:20) [7]

to [6] вот именно :-)
Я просидела на этой проблеме часа полтора, потом написала сюда в конфу, и вынуждена была работать по другим задачам :-(((


 
novill ©   (2007-03-01 17:11) [8]

> [7] Abcdef123   (01.03.07 16:20)
Барышня, вы в следующий раз сразу фото к таким вопросам прикрепляйте :) и свой адрес ;)

Вот вам первая доза бесплатно :)

Select поле1, поле2 from tbl_1
group by поле1, поле2
having count(*)>1


 
Lapushka-dochka   (2007-03-02 04:25) [9]

To Novil [8] Насчет фотки - не пришлю, а то, несмотря на мои примитивные, вопросы вдруг еще влюбитесь, страдать будете :-)
А вот насчет вас - я вряд ли влюбилась бы, очень уж меня привлекают мужчины, которые умнее меня, у которых есть чему поучиться :-) А вы оплошали, ваш запрос не работает :-) Вернее, это запрос годится для проверки дублирования записей на оба поля. А мне надо, чтоб выяснить о существовании записей, когда одному и тому же значению поле1 есть два или более значений поле2 (прочтите мое [1] сообщение). Но, ваш запрос, к большому сожалению, это не выявляет :-\


 
ЮЮ ©   (2007-03-02 05:36) [10]

Люби меня !!! :)

Select t1.поле1, t1.поле2, t2.поле2
from
 tbl_1 t1
 JOIN  tbl_1 t2
ON
 (t1.поле1 = t2.поле1) AND (t1.поле2 < t2.поле2)


 
Abcdef123   (2007-03-02 08:05) [11]

To [10] Ну вот это уже лучше :-) По крайней мере, хоть показывает данные, если есть в таблице такие записи, но, не идеальный SQL все равно, поскольку не наглядно показывает данные.
Было бы красивее, если бы, например, так
поле1        поле2
Р1             100  
Р1             200
Р2             57
Р2             150
Р2             300
...................
Вот такой если напишешь SQL запрос, то полюблю :-)
Ну а пока возьми с полки пирожок, заслужил все же за правильный вариант ответа :-)


 
ЮЮ ©   (2007-03-02 08:22) [12]

Лапушка, не привередничай, мой гораздо нагляднее. в твоем надо искать пару записей с "P1", чтобв увидеть в них "100" и "200", а мой сразу выдаёт
 P1 100 200

такой выдаст то, что хочешь, и как хочешь, но он более "тяжёлый":

Select DISTINCT t1.поле1, t1.поле2
from
tbl_1 t1
JOIN  tbl_1 t2
ON
(t1.поле1 = t2.поле1) AND (t1.поле2 <> t2.поле2)

З.Ы. Пирожка чего-то не хрчется. Чего-нибудь погорячей


 
ЮЮ ©   (2007-03-02 09:53) [13]

Пирожки уже зачерствели, а возлюбившая куда-то пропала :(


 
Abcdef123   (2007-03-02 10:43) [14]

To ЮЮ
Одну ошибочку допустили в селекте: вместо t1.поле2 надо t2.поле2
и чтобы отображались только интересующие записи надо добавить where t2.поле2<>""
Тогда будет правильно :-)
Ну все равно, вы молодец :-) Буду в ваших краях - поцелую. У меня во Владике много близких родственников.


 
ЮЮ ©   (2007-03-02 11:03) [15]

Одну ошибочку допустили в селекте: вместо t1.поле2 надо t2.поле2

без разницы. и там и там мы получим одно и то же

и чтобы отображались только интересующие записи надо добавить where t2.поле2<>""

Во первых, о пустых полях речь не шла.
Во вторых, если уж пожла речь о пустых полях, то что должно бы ть в случае

поле1 = Т1, поле2=100
поле1 = Т1, поле2=
?

1) поле1 = Т1, поле2=100
2) ничего. В этом случае запрос надо править.

У меня во Владике много близких родственников.
Теперь +1 :)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.054 c
15-1172573230
DVM
2007-02-27 13:47
2007.03.25
Интересное поведение WinXP. Папка Мои документы/Видео


15-1172866869
alpha5
2007-03-02 23:21
2007.03.25
Стили приложения


15-1172915019
Kerk
2007-03-03 12:43
2007.03.25
Предвыборная агитация


2-1172768707
FIL-23
2007-03-01 20:05
2007.03.25
какя есть функция чтобы свернуть форму?


15-1172575857
Bless
2007-02-27 14:30
2007.03.25
Получить пароль от ICQ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский