Básicamente, quiero una instrucción de selección que seleccione ID y Versión, pero cada ID tiene varias versiones, por lo que quiero seleccionar todas las ID de la tabla y cada versión asociada con cada ID.

Si solo hago:

select ID, Version FROM Table

Entonces solo obtengo una ID y está asociada a la versión más reciente, no obtengo múltiples entradas para ID = X y las múltiples versiones asociadas con ID X, etc.

Ejemplo de datos que quiero:

ID = 1, Version = 0
ID = 1, Version = 1.0
ID = 1, Version = 2.0
ID = 2, Version = 0
ID = 2, Version = 1.0
ID = 2, Version = 2.0
ID = 2, Version = 3.0
ID = 3, Version = 0
ID = 4, Version = 0
ID = 4, Version = 1.0

etc etc
0
Nicholas Tree 23 ene. 2018 a las 23:28

3 respuestas

La mejor respuesta

Si la estructura de su tabla incluye ID de 2 columnas ( vea la Nota ) y la versión Y existía una fila para cada combinación de fila / versión y luego SELECT ID, la versión enumeraría todas las filas.

P.ej. CREATE TABLE IF NOT EXISTS details (id INTEGER, version TEXT);

Y se completa de la siguiente manera:

enter image description here

Entonces el resultado de SELECT id,version from details; sería: -

enter image description here

O si la consulta fuera SELECT 'ID= ' ||id||', Version= ' || version AS vercol FROM details; sería (para atender cómo ha demostrado que desea el resultado): -

enter image description here

  • Tenga en cuenta que la columna denominada id no es un alias de rowid (es decir, no se define como id INTEGER PRIMARY KEY o id INTEGER PRIMARY KEY AUTOINCREMENT).

Sin embargo

Si la estructura y el uso no se basan en lo anterior, es probable que encuentre problemas.

Por ejemplo, lo siguiente almacena la última versión (y otras versiones): -

enter image description here

Entonces SELECT id, version FROM details_alt; daría como resultado lo que parece estar describiendo, es decir (las otras columnas de versión se ignoran en este uso): -

enter image description here

Manipular una estructura de este tipo y calcular otras versiones distintas de las más altas o incluir otras columnas sería bastante complejo. Por ejemplo, esto es en parte para hacer lo primero:

SELECT
    CASE
        WHEN version < 1 THEN 'ID= '||id||', Version=0'
        WHEN version < 2 THEN 'ID= '||id||' Version=0, 1.0'
        WHEN version < 3 THEN 'ID= '||id||' Version=0, 1.0, 2.0'
        WHEN version < 4 THEN 'ID= '||id||' Version=0, 1.0, 2.0, 3.0'
    END AS idcol
FROM details_alt

Y daría como resultado: -

enter image description here

En resumen, si su tabla no está estructurada como se muestra inicialmente, lo que parece ser el caso, está introduciendo una complejidad innecesaria y no está siguiendo técnicas de diseño de bases de datos bien establecidas.

La respuesta, de nuevo si no usa la estructura inicial, es utilizar un diseño en la línea del diseño inicial que se muestra.

De lo contrario, debe modificar su pregunta para mostrar la estructura de la tabla y cómo se utiliza cuando se almacena con un ejemplo de datos reales.

0
MikeT 24 ene. 2018 a las 00:35

Es tan simple como

 SELECT ID , Version FROM Table WHERE ID='X'

Aquí X es su número de identificación

0
Hasibul Hasn 23 ene. 2018 a las 20:31

Honestamente, tu pregunta es un poco confusa porque

select ID, Version From table

Traería todos los datos de la tabla, creo que la tabla es grande y es por eso que parece que no muestra todas las versiones para cada ID, así que intente usar una orden por.

  select ID, Version FROM Table
    order by ID, Version
0
user8513344user8513344 23 ene. 2018 a las 20:39
48410246