отключить последний ряд - PullRequest
1 голос
/ 06 мая 2011

У меня есть эта таблица в PostgreSQL:

 appid |               appname               | apptype | creationtime | createdby | display
-------+-------------------------------------+---------+--------------+-----------+---------
     0 | Custom                              |      -1 |              |           | t
  1000 | Performance/Resource                |      -2 |              |           | t
  2000 | PING                                |       0 |              |           | t
  2001 | HTTP                                |       0 |              |           | t
  2002 | HTTPS                               |       0 |              |           | t
  2003 | FTP                                 |       0 |              |           | t
  2004 | LDAP                                |       0 |              |           | t
  2005 | IMAP                                |       0 |              |           | t
  2006 | POP                                 |       0 |              |           | t
  2007 | SMTP                                |       0 |              |           | t
  2008 | DNS                                 |       0 |              |           | t
  2009 | NFS                                 |       0 |              |           | t
  2010 | NTP                                 |       0 |              |           | t
  2011 | SSH                                 |       0 |              |           | t
  2012 | TCP                                 |       0 |              |           | t
  2013 | TELNET                              |       0 |              |           | t
  3000 | Generic Mail (RTT)                  |       3 |              |           | t
  3001 | Apache Tomcat                       |       2 |              |           | t
  3002 | JBoss                               |       2 |              |           | t
  3003 | MySQL                               |       1 |              |           | t
  3004 | WebSphere                           |       2 |              |           | t
  4000 | Microsoft Exchange Server 2003      |       3 |              |           | t
  4001 | Exchange Server 2007 /2010          |       3 |              |           | t
  4003 | Microsoft SQL Server 2008           |       1 |              |           | t
  4004 | Microsoft ISA Server 2006           |      99 |              |           | t
  4005 | Microsoft IIS                       |       4 |              |           | t
  3005 | DB2                                 |       1 |              |           | t
  3006 | Apache HTTP Server                  |       4 |              |           | t
  3007 | Oracle                              |       1 |              |           | t
  3008 | PostgreSQL                          |       1 |              |           | t
  3009 | WebLogic                            |       2 |              |           | t
  3010 | Adobe ColdFusion                    |       2 |              |           | t
  3011 | Sybase                              |       1 |              |           | t
  4007 | Microsoft SQL Server 2005 (EXPRESS) |       1 |              |           | t
  4008 | Microsoft Team Foundation Server    |       2 |              |           | t
  4009 | Microsoft .NET                      |      99 |              |           | t
  3012 | Apache Tomcat                       |       2 |              |           | f

Apache Tomcat повторяется 2 раза, когда эта таблица отображается в раскрывающемся списке. Как отключить последний ряд, который является 3012? У меня есть возможность удалить его, но эта таблица используется в нескольких местах, поэтому я не хочу ее удалять.

Ответы [ 3 ]

2 голосов
/ 06 мая 2011

Я думаю, что более важный вопрос - почему он в вашей базе данных дважды. В зависимости от того, что вы используете этот запрос для игнорирования один может быть так же неправильно, как удаление один. Возможно, это связано с тем, что это единственная запись с отображением f. Я думаю, вы могли бы просто сделать ГДЕ дисплей! = 'F'

1 голос
/ 06 мая 2011

Tomcat появляется дважды, потому что он находится в таблице дважды, один раз с идентификатором 3001 и снова с идентификатором 3012. Я бы назвал это проблемой с данными, а не с запросом.Это действительно должно быть там дважды?Вы говорите, что не хотите удалять один из них, потому что он используется в нескольких местах, но если вы не исправите это сейчас, это будет сложнее исправить позже.

Я бы сосредоточился на слиянииэти дубликаты строк.Найдите все записи (в других таблицах), которые ссылаются на одну из этой пары, и обновите их, чтобы они ссылались на другую.Затем вы можете удалить тот, к которому больше ничего не относится.

0 голосов
/ 06 мая 2011

Почему бы не использовать столбец display?Похоже, это для фильтрации вещей, которые не должны быть показаны.Итак, вы можете сделать запрос, подобный следующему:

SELECT appid, appname
FROM stat_applications
WHERE appid  <> 0
  AND appid  <> 1000
  AND display = 't'

Если вы не хотите использовать display, то вы можете просто добавить 3012 в свой список игнорируемых вещей:

SELECT appid, appname
FROM stat_applications
WHERE appid  <> 0
  AND appid  <> 1000
  AND appid  <> 3012

Или, поскольку ваш список исключений становится длиннее, используйте NOT IN:

SELECT appid, appname
FROM stat_applications
WHERE appid NOT IN (0, 1000, 3012)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...