una soporta segundo rapida por optimizar mas lentas lenta hacer cuello cuantas consultas consulta como botella agilizar sql asp-classic vbscript ado

soporta - optimizar consultas mysql explain



SQL: Mostrando una opciĆ³n de enlace usando las condiciones (1)

Estoy tratando de hacer que una opción de menú esté disponible para los usuarios dependiendo de las condiciones usando 2 tablas.

Tenemos un sitio web de directorio para diferentes ciudades y cada administrador de la ciudad puede agregar subcategorías a las categorías principales para personalizar su estructura de directorios, pero actualmente les permite agregar subcategorías a otras subcategorías que ya están pobladas con anuncios, lo que no debería '' hacer

Me gustaría mostrar solo la opción de ''Agregar una subcategoría'' a otra subcategoría cuando ya no hay anuncios agregados.

Por ejemplo, hay una subcategoría llamada ''Contadores'' en todos los directorios de la ciudad. Está lleno de anuncios de clientes en el directorio ''Brentwood'', pero no en el directorio ''Shrewsbury''.

Solo quiero mostrar la opción de ''Agregar una subcategoría'', si se cumplen las tres condiciones siguientes utilizando los datos de las siguientes tablas y columnas:

  • Tabla de ''Directorios'': debe ser la ciudad de franquicia actual (utilizando la columna ''FranchiseGID'')
  • Tabla ''Directorios'': debe aplicarse a cada subcategoría individual (columna GID)
  • Tabla ''Clientes'': Ningún cliente se ha registrado para aparecer en la subcategoría (columna GID)

Entonces, usando una combinación de estas columnas de tabla, usando ''iAdvertCount'' como contador y ''ClientGID'' para verificar si hay suscripciones de anuncios en esa subcategoría en particular; también que solo se está aplicando al sitio web de la franquicia actual (FranchiseGID).

Puedo seleccionar información de una tabla, pero no de varias, así que me gustaría recibir ayuda sobre cómo seleccionar la información necesaria de las columnas y tablas anteriores.

Aquí está lo lejos que he llegado con la tabla ''Directorios'', pero también necesito agregar la condición de GID del Cliente desde ''Clientes'':

Dim iAdvertCount SQLCommand = "SELECT COUNT(*) AS Counter FROM Directories WHERE GID is not null AND FranchiseGID is not null" rsTemp.Open SQLCommand, objConn, adOpenStatic, adLockReadOnly iSubscriptionCount = rsTemp("Counter") rsTemp.Close if iSubscriptionCount = 0 then %><a href="AddDirectory.asp?PGID=<% = rsDirectory("GID") %>"><% = GetIcon("Add", "Add Sub Directory", 25, True) %></a><% end if

Hasta ahora, puedo ocultar la opción ''Agregar una subcategoría'' en cualquier directorio de franquicias de sitios web (p. Ej., Brentwood) que contenga un ClientGID, pero se aplica a todas las subcategorías, independientemente de si contienen Suscripciones / Anuncios de clientes o no.

¡Espero que alguien pueda ayudar y de hecho tenga sentido lo que escribí para ayudar de alguna manera, ya que ayudaría mucho!


Espero que esto sea más que un tiro proverbial en la oscuridad

Creo que necesitas usar un operador de existir.

El operador existente se usa en la cláusula where para determinar si la subconsulta arroja resultados o no.

Por lo tanto, su consulta podría verse así:

SELECT COUNT(*) AS Counter FROM Directories WHERE GID is not null AND FranchiseGID is not null AND NOT EXISTS(SELECT ''ARBITRARY VALUE'' FROM clients WHERE clients.gid = directories.gid)

El operador exists aprovecha una subconsulta , por lo que podemos consultar la tabla de directorios aunque no esté en la cláusula from de la subconsulta. Entonces, si la subconsulta devuelve algo, no será devuelto para que sea contado por la función de conteo

Probablemente necesites cambiar la cláusula where de la subconsulta para que funcione correctamente ya que no estoy seguro de cómo está estructurada tu base de datos.