MySQL: bandera = 1 cuando id (...) De otro modo 0?

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Octubre 12th, 2009, 3:21 am

Ive consiguió una tabla de categorías y hay una columna de marca indexados que comprobar para ver si la categoría debe aparecer en el índice.

Ive consiguió casi todos los de mi por-unidad de editores de configuración y ahora Im de trabajo sobre los editores a granel. Mi diseño actual para el editor de marca mayor parte me tiene <ul> crear jerarquías con las casillas de la <li> elementos de cada categoría.

Aquí está un ejemplo de mi casilla de verificación. Mi plan es tener una matriz simple de la categoría enteros de identificación correspondiente a las categorías que deben tener la bandera conjunto.

HTML Código: [ Select ]
<li><label><checkbox name="flags[{category_id}]" .../>


Ahora las dos vías de consulta para hacer esto es bastante simple.

SQL Código: [ Select ]
UPDATE categories SET flag = FALSE

SQL Código: [ Select ]
UPDATE categories SET flag = TRUE WHERE id IN (...)


No quiero usar dos consultas a través. Vista 1000 filas de este cuadro sería extremadamente grave sobre-estimación de las filas máximo previsto.

¿Cómo puedo poner la bandera a ambos necesitaban los estados con una sola consulta en MySQL con una serie de identificadores de categoría que debe tener el pabellón conjunto TRUE como entrada?
Strong with this one, the sudo is.
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Octubre 12th, 2009, 3:21 am

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Octubre 12th, 2009, 3:33 am

¡Por Júpiter creo Ive got it!

SQL Código: [ Select ]
UPDATE categories
SET flag =
CASE category_id IN (1,3,5,7,9) WHEN TRUE THEN TRUE
ELSE FALSE END
  1. UPDATE categories
  2. SET flag =
  3. CASE category_id IN (1,3,5,7,9) WHEN TRUE THEN TRUE
  4. ELSE FALSE END
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8926
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Nota Octubre 12th, 2009, 2:37 pm

Yup, yo estaba a punto de mencionar el caso .. CUANDO .. Luego .. En otro lugar .. FIN sintaxis para usted. Hace poco necesitaba algo como esto también por algo que estaba trabajando.
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Octubre 12th, 2009, 2:40 pm

Id ya pensó en Id caso cuando comenzó el hilo, pero yo estaba teniendo problemas para obtener la a trabajar para mí.

Seguí querer hacer algo como esto en vez de la manera que tengo allá arriba.

SQL Código: [ Select ]
UPDATE categories
SET flag =
CASE category_id WHEN IN (1,3,5,7,9) THEN TRUE
ELSE FALSE END
  1. UPDATE categories
  2. SET flag =
  3. CASE category_id WHEN IN (1,3,5,7,9) THEN TRUE
  4. ELSE FALSE END


Esto me da errores como éste, que me hacía caso me pregunto si podría apoyar en absoluto.

Código: [ Select ]
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IN (1,3,5,7,9) THEN TRUE ELSE FALSE END' at line 3
Strong with this one, the sudo is.

Publicar Información

  • Total de mensajes en este tema: 4 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 218 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC