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
Форумы портала PHP.SU :: Версия для печати :: Как проверить базу данных на повтор значений в ячейках?
Форумы портала PHP.SU » PHP » Программирование на PHP » Как проверить базу данных на повтор значений в ячейках?

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

1. LEONeso - 13 Января, 2011 - 20:25:43 - перейти к сообщению
Здравствуйте, не могу понять, как проверить базу данных на повтор значений в ячейках?
Допустим, есть ячейка name и нужно проверить её значение, есть ли еще 1 в 1 такие значения.
Как это реализовывается?
2. OrmaJever - 13 Января, 2011 - 20:36:05 - перейти к сообщению
Не понял Взять значение из базы и проверить
3. vlom - 13 Января, 2011 - 20:41:24 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. mysql_query("SLECT COUNT(*) FROM `table` WHERE `name`='Alex'")

Результатом этого запроса будет набор данных, состоящий из единственного целого
числа — количества элементов в таблице table.
4. Champion - 13 Января, 2011 - 20:42:42 - перейти к сообщению
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.  

Назначение полей понятно из их названия. О назначении запросов можно догадаться из их содержания.
5. LEONeso - 13 Января, 2011 - 23:44:09 - перейти к сообщению
Champion, не понял... попробовал но ошибки и все... видать я не так все делал.

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

cnt - ?
(Добавление)
все сразу нужно применять или это 2 способа, если 2 то я пробовал по одному.
6. CenapaTop - 15 Января, 2011 - 06:15:29 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `name`, COUNT(*) AS cnt
  2. FROM `tbl`
  3. GROUP BY `name`
  4. HAVING cnt > 1;
7. LEONeso - 15 Января, 2011 - 11:09:02 - перейти к сообщению
CenapaTop, по прежнему не понял, что такое cnt, у меня идет вечный цикл.

CODE (htmlphp):
скопировать код в буфер обмена
  1. Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in
8. Саныч - 15 Января, 2011 - 11:47:10 - перейти к сообщению
LEONeso пишет:
COUNT(*) AS cnt
9. Champion - 15 Января, 2011 - 11:52:43 - перейти к сообщению
LEONeso, выполни запрос не из php а в PMA, через консоль или еще как-нибудь. By напиши все-таки текст ошибки. Или воспользуйся функцией mysql_error(). А по поводу cnt - это алиас[dot]
10. LEONeso - 15 Января, 2011 - 13:28:57 - перейти к сообщению
через 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:
PHP:
скопировать код в буфер обмена
  1. while (($myrow=mysql_fetch_array($result)) !== FALSE) {}
11. Champion - 15 Января, 2011 - 13:55:01 - перейти к сообщению
LEONeso пишет:
требуется выводить 2 записи, которые имеют идентичные данные
Пойми запрос и поправь один символ
12. LEONeso - 15 Января, 2011 - 14:47:03 - перейти к сообщению
Champion, при такой очевидной подсказке, там и понимать ничего не пришлось... > на !=
Спасибо.

mysql работает, но все таки дело в php и его странных циклах, которые выводят одно и то же несколько раз. Может стоит проверять $result а не $myrow, которая собирает массив.
13. DeepVarvar - 15 Января, 2011 - 14:57:48 - перейти к сообщению
LEONeso пишет:
проверять $result

Неа - это всего лишь дескриптор результата..

 

Powered by ExBB FM 1.0 RC1