insertar formulario ejemplos desde datos conexion conectar con archivo php mysql mysqli select-until

php - formulario - MySQL/MySQLi selecciona de la tabla hasta que se encuentre un valor dado



insertar datos en mysqli con php (2)

La consulta será

SELECT * FROM table_name WHERE PrimaryID <= 12(your_id) AND SecondaryID=9 and TertiaryID=4 AND Limit=1 ORDER BY DateTime DESC

Está probado y funcionando

He buscado durante bastante tiempo en esto y parece que no puedo encontrar algo que me sirva, ya que cada pregunta similar se refiere a alcanzar cierta suma de una columna.

Estoy buscando una forma de buscar a través de los registros en una tabla todos los valores de columna comunes (no son registros consecutivos en la tabla, pero deben ser registros consecutivos cuando se tienen en cuenta los valores comunes) y recuperar todos los registros hasta una columna específica tiene un valor diferente.

Teniendo en cuenta los datos:

PrimaryID SecondaryID TertiaryID Limit DateTime 12 9 4 1 2013-03-22 00:00:14 11 9 4 1 2013-03-22 00:00:13 10 54 11 0 2013-03-22 00:00:12 9 9 4 1 2013-03-22 00:00:11 8 9 23 1 2013-03-22 00:00:10 7 9 4 1 2013-03-22 00:00:09 6 9 4 0 2013-03-22 00:00:08 5 9 16 0 2013-03-22 00:00:07 4 72 32 0 2013-03-22 00:00:06 3 9 4 1 2013-03-22 00:00:05 2 9 4 1 2013-03-22 00:00:04 1 9 4 0 2013-03-22 00:00:03

Estoy tratando de recuperar los registros con SecondaryID = 9 e TertiaryID = 4 hasta Limit = 0 (ordenado por DateTime DESC).

Usando PrimaryID 12 como punto de partida, esperaría lo siguiente:

PrimaryID SecondaryID TertiaryID Limit DateTime 12 9 4 1 2013-03-22 00:00:14 11 9 4 1 2013-03-22 00:00:13 9 9 4 1 2013-03-22 00:00:11 7 9 4 1 2013-03-22 00:00:09

Y para PrimaryID 3 como punto de partida:

PrimaryID SecondaryID TertiaryID Limit DateTime 3 9 4 1 2013-03-22 00:00:05 2 9 4 1 2013-03-22 00:00:04

Actualmente estoy recuperando todos los resultados para SecondaryID = 9 e TertiaryID = 4 y luego reviso en PHP - y actualmente con cientos de resultados (y creciendo cada semana) es demasiado lento para trabajar en producción.

También aceptaré gustosamente una solución específica para MySQLi, ya que estamos a punto de emprender una transición a MySQLi en lugar de MySQL.


Me di cuenta de que he estado haciendo esta consulta de la manera incorrecta.

En lugar de "contar hacia atrás" desde un punto dado en los datos para ver cuándo el Límite se convirtió primero en = 1 en la secuencia, en cambio tuve que buscar la ocurrencia previa de Límite = 0 y luego consultar hacia adelante hasta mi PrimaryID inicial.

La consulta resultante que cubre todo lo que necesito es

SELECT * FROM table1 WHERE SecondaryID=''9'' AND TertiaryID=''4'' AND `Limit`=''1'' AND PrimaryID<=''3'' AND `DateTime`>= (SELECT `DateTime` FROM table1 WHERE SecondaryID=''9'' AND TertiaryID=''4'' AND `Limit`=''0'' AND PrimaryID<=''3'' ORDER BY `DateTime` DESC LIMIT 1) ORDER BY `DateTime` DESC