Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как проверить базу данных на повтор значений в ячейках?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: выверка дубликатов
LEONeso
Отправлено: 13 Января, 2011 - 20:25:43
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




Здравствуйте, не могу понять, как проверить базу данных на повтор значений в ячейках?
Допустим, есть ячейка name и нужно проверить её значение, есть ли еще 1 в 1 такие значения.
Как это реализовывается?


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
OrmaJever Модератор
Отправлено: 13 Января, 2011 - 20:36:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Не понял Взять значение из базы и проверить


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
vlom
Отправлено: 13 Января, 2011 - 20:41:24
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010  
Откуда: Екатеринбург


Помог: 4 раз(а)




PHP:
скопировать код в буфер обмена
  1. mysql_query("SLECT COUNT(*) FROM `table` WHERE `name`='Alex'")

Результатом этого запроса будет набор данных, состоящий из единственного целого
числа — количества элементов в таблице table.

(Отредактировано автором: 13 Января, 2011 - 20:42:48)

 
 Top
Champion Супермодератор
Отправлено: 13 Января, 2011 - 20:42:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT name, count(*) cnt FROM tbl HAVING cnt > 1;
  2.  
  3. SELECT * FROM tbl t1 WHERE EXISTS (SELECT id FROM tbl t2 WHERE t2.id > t1.id AND t2.name = t1.name)
  4.  

Назначение полей понятно из их названия. О назначении запросов можно догадаться из их содержания.
 
 Top
LEONeso
Отправлено: 13 Января, 2011 - 23:44:09
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




Champion, не понял... попробовал но ошибки и все... видать я не так все делал.

tbl - это название таблицы
t1 t2 - метка?

cnt - ?
(Добавление)
все сразу нужно применять или это 2 способа, если 2 то я пробовал по одному.


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
CenapaTop
Отправлено: 15 Января, 2011 - 06:15:29
Post Id



Частый гость


Покинул форум
Сообщений всего: 166
Дата рег-ции: Авг. 2009  


Помог: 1 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `name`, COUNT(*) AS cnt
  2. FROM `tbl`
  3. GROUP BY `name`
  4. HAVING cnt > 1;
 
 Top
LEONeso
Отправлено: 15 Января, 2011 - 11:09:02
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




CenapaTop, по прежнему не понял, что такое cnt, у меня идет вечный цикл.

CODE (htmlphp):
скопировать код в буфер обмена
  1. Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Саныч Модератор
Отправлено: 15 Января, 2011 - 11:47:10
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




LEONeso пишет:
COUNT(*) AS cnt


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Champion Супермодератор
Отправлено: 15 Января, 2011 - 11:52:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




LEONeso, выполни запрос не из php а в PMA, через консоль или еще как-нибудь. By напиши все-таки текст ошибки. Или воспользуйся функцией mysql_error(). А по поводу cnt - это алиас[dot]
 
 Top
LEONeso
Отправлено: 15 Января, 2011 - 13:28:57
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




через phpmyadmin запрос обработан верно, значит я вывожу данные не верно.
CODE (SQL):
скопировать код в буфер обмена
  1. FROM test t1
  2. WHERE EXISTS (
  3.  
  4. SELECT id
  5. FROM test_table t2
  6. WHERE t2.id > t1.id
  7. AND t2.name = t1.name
  8. )
  9. LIMIT 0 , 30

запрос: вывел только одну запить, которая дублируется по отношению к старым, требуется выводить 2 записи, которые имеют идентичные данные типа: id=75, name=kyle and id=317, name=kyle

При выводе запроса из бд я использую цикл while:

(Отредактировано автором: 15 Января, 2011 - 13:36:38)



-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Champion Супермодератор
Отправлено: 15 Января, 2011 - 13:55:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




LEONeso пишет:
требуется выводить 2 записи, которые имеют идентичные данные
Пойми запрос и поправь один символ
 
 Top
LEONeso
Отправлено: 15 Января, 2011 - 14:47:03
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




Champion, при такой очевидной подсказке, там и понимать ничего не пришлось... > на !=
Спасибо.

mysql работает, но все таки дело в php и его странных циклах, которые выводят одно и то же несколько раз. Может стоит проверять $result а не $myrow, которая собирает массив.


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Января, 2011 - 14:57:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




LEONeso пишет:
проверять $result

Неа - это всего лишь дескриптор результата..
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB