2009-05-22 26 views
10

Tôi đang cố gắng tạo truy vấn động trong MYSQL để tham gia bảng có tên được lưu trữ dưới dạng giá trị trường trên bảng khác như sau:MYSQL tham gia bảng mà tên của nó được lưu trữ dưới dạng giá trị trường trên một bảng khác

SELECT * FROM CATEGORIES 
INNER JOIN CATEGORISATIONS ON CATEGORISATIONS.id = CATEGORIES.fk_categorisation 
INNER JOIN [CATEGORISATIONS.nom_table] LV_REGIONS ON LV_REGIONS.id = CATEGORIES.valeur 

Bất kỳ câu trả lời nào ?!

+0

Việc sử dụng các lĩnh vực này là CATEGORISATIONS.nom_table có thể tham khảo bất kỳ của bảng của toàn bộ sơ đồ mà không cần tạo một bảng mối liên hệ giữa mỗi của nó. – Cedric

Trả lời

1

Tôi sẽ giả định rằng bạn đang cố gắng lấy "[CATEGORISATIONS.nom_table]" để giải quyết tên bảng.

Trong trường hợp đó, bạn có thể thử sử dụng truy vấn con ở đó sẽ chỉ giải quyết được 1 tên bảng (Vì vậy, một kết quả có 1 hàng và 1 cột). Tôi không chắc chắn nếu MySQL sẽ chấp nhận một tên chuỗi cho một bảng ở đó, nhưng nó có giá trị một thử.

2

Đề xuất đầu tiên của tôi là tìm ai đã thiết kế lược đồ đó và cung cấp cho họ một cuốn sách hay về thiết kế cơ sở dữ liệu quan hệ. Từ đó, bạn có thể đứng đầu một trong hai hướng: Đầu tiên là hoàn tác các mess bạn có trong lược đồ bằng cách tải các bảng riêng biệt được đặt tên bởi CATEGORIZATIONS.nom_table vào một bảng REGIONS mà bạn có thể truy vấn trực tiếp.

Hoặc, bạn sẽ cần phải ngắt truy vấn đó thành nhiều phần, sử dụng kết quả của INNER JOIN đầu tiên để xây dựng truy vấn UNION để thực hiện INNER JOIN thứ hai.

1

Có lẽ anh chàng người đã làm điều này là nhận thức được rằng nó thực sự không phải là một thiết kế thực hành tốt ... nhưng đôi khi bạn cần phải thực hiện Hack crappy để làm những gì bạn muốn làm ...

Từ những gì tôi biết về chủ đề, tôi không nghĩ rằng bạn có thể đạt được điều đó chỉ với một truy vấn SELECT.

Có lẽ với một proc lưu trữ ...

1

Tôi đã cố gắng sử dụng các giá trị bảng mysql trở về từ một subquery như tên trường trước và đã không thành công. Tôi không bao giờ có thể nhận được mysql chấp nhận một giá trị recordset như một tên trường. Tôi đã phải sử dụng php để hoàn thành nhiệm vụ này, thật không may.

+1

Đó là những gì tôi sẽ làm cho đến một ngày nào đó ai đó cho tôi thấy một cách để làm trong một truy vấn mysql. – Cedric

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