Форум: "Начинающим";
Текущий архив: 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.036 c