2011-09-11 16 views
5

Mi problema es el siguiente:SQL Rellenar con los datos distintas y una secuencia

  • Necesito llenar una tabla de 'coches' basado en la información de los casos de alquiler de los coches.
  • Necesito crear una clave principal 'car_id' pero solo para distintas matrículas en la tabla de alquileres.
  • Estoy creando el car_id con una secuencia.

He intentado el siguiente código pero recibir un error:

--INSERT INTO cars c (c.plate, c.car_id) 
SELECT DISTINCT cr.plate, car_id_seq.nextval 
FROM cars_rentals cr 
; 

Aunque esto funcionará (sin placas de matrícula distintas):

--INSERT INTO cars c (c.plate, c.car_id) 
SELECT cr.plate, car_id_seq.nextval 
FROM cars_rentals cr 
; 

(La línea superior se comenta así que puede ver los valores que estoy tratando de generar de inmediato)

So! ¿Alguien sabe cómo puedo cualquiera? A) Obtenga el código anterior para trabajar con DISTINCT o B) encuentre una forma de obtener MAXVALUE de la secuencia como DISTINCT COUNT de las placas de registro (para que pueda hacer dos instrucciones de inserción)

¡Gracias de antemano! Jack

+0

Es de suponer que el error fue 'ORA-02287: número de secuencia no permitido aquí'? En general, es mejor decirlo. –

Respuesta

10

El error es:

ORA-02287: sequence number not allowed here

Esto resuelve que:

SELECT cr.plate, car_id_seq.nextval 
FROM (SELECT DISTINCT plate FROM cars_rentals) cr 
+1

¡Tony, usted leyenda! No sabía que podía anidar subconsultas dentro de la cláusula FROM: O: O Mi mundo acaba de voltearse al revés. ¡Muchas gracias! (y sí, ese fue el error, lo siento por omitirlo) – Bant

+3

Bliney! Desearía tener este tipo de reacción en el trabajo ;-) –

-1

Prueba este

select cr.plate,max(car_id_seq.nextval) 
from car_rentals cr 
group by cr.plate 
+0

Gracias por la sugerencia, pero esto no funcionó. Temo que no creo que puedas tomar el máximo valor de una secuencia. aplaude aunque – Bant

+0

intente lanzar la secuencia como soy entero – Sparky

Cuestiones relacionadas