2011-09-11 38 views
5

Vấn đề của tôi là như sau:SQL Populating với dữ liệu riêng biệt và một chuỗi

  • tôi cần phải cư một bảng 'xe' dựa trên thông tin từ các trường hợp của thuê những chiếc xe.
  • Tôi cần phải tạo khóa chính 'car_id' nhưng chỉ cho các bảng đăng ký riêng biệt trong bảng cho thuê.
  • Tôi đang tạo car_id bằng một chuỗi.

Tôi đã thử đoạn mã sau nhưng nhận được một lỗi:

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

Mặc dù điều này sẽ làm việc (không có tấm đăng ký riêng biệt):

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

(Dòng đầu là nhận xét vì vậy tôi có thể thấy các giá trị mà tôi đang cố gắng xuất ngay lập tức)

Vì vậy! Có ai biết làm thế nào tôi có thể; A) Lấy mã trên để làm việc với DISTINCT hoặc B) tìm cách để có được MAXVALUE của chuỗi là DISTINCT COUNT trong số các biển đăng ký (vì vậy tôi có thể thực hiện hai câu lệnh chèn)

Cảm ơn bạn trước! Jack

+0

Có lẽ lỗi là 'ORA-02.287: không được phép số thứ tự ở đây'? Nói chung là tốt nhất. –

Trả lời

10

Lỗi này là:

ORA-02287: sequence number not allowed here

này sẽ giải quyết nó:

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

Tony bạn truyền thuyết! Tôi không biết bạn có thể lồng ghép các truy vấn phụ bên trong mệnh đề FROM: O: O Thế giới của tôi vừa bị lộn ngược. Cảm ơn rất nhiều! (và có đó là lỗi, xin lỗi vì bỏ qua nó) – Bant

+3

Bliney! Tôi muốn tôi có loại phản ứng này tại nơi làm việc ;-) –

-1

Hãy thử điều này

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

Cảm ơn bạn đã đề xuất nhưng điều này không hoạt động Tôi sợ vì tôi không nghĩ rằng bạn có thể lấy giá trị tối đa từ một chuỗi! cheers tho – Bant

+0

Thử truyền chuỗi như số nguyên – Sparky

Các vấn đề liên quan