2010-04-07 37 views
14

Tôi muốn làm điều gì đó như thế này:MySql CHỌN AS - Nối tất cả các tên trường

SELECT table.id AS prefix_id, table.name AS prefix_name 

... và đã tiền tố thêm động cho tất cả các tên trường chứ không phải là lựa chọn tất cả bằng tay (tức là SELECT table.* AS prefix_* hoặc một cái gì đó)

Hy vọng rằng tôi đã mô tả chính xác. Có suy nghĩ gì không?

Sửa

Để được rõ ràng, lý do tôi hỏi là để đảm bảo rằng kết quả truy vấn của tôi chứa mỗi cột từ mỗi bảng tôi gọi ngay cả khi có tên trường trùng lặp. Ví dụ, tôi có thể có một bảng với nhiều trường có nghĩa là tôi không muốn bí danh tất cả các trường theo cách thủ công. Hơn nữa nếu 3 bảng có trường được gọi là name kết quả của tôi sẽ không chứa ba kết quả name; nó sẽ có một cái. Tôi muốn tránh sự mơ hồ với tên cột của mình.

+0

mục đích của các tiền tố là gì? Tôi nghĩ rằng tôi có một ý tưởng, nhưng nó sẽ phụ thuộc vào bối cảnh của vấn đề của bạn. – JohnFx

+0

Nếu tôi lấy thông tin từ hai bảng và cả hai đều có chỉ mục 'id' và cột 'tên', nó sẽ không trả lại kết quả từ cả hai bảng. – jay

+0

Đã chỉnh sửa câu hỏi thành * hy vọng * hữu ích hơn. – jay

Trả lời

0

Khi bạn tham khảo kết quả, bạn có thể tham chiếu từng cột theo tablename.column. Vì vậy, bạn có một tiền tố mặc định được nối thêm vào mỗi tên cột.

SELECT table.id,table.name,other.name FROM table,other Where other.name = table.name; 
0

tôi có thể tưởng tượng một tình huống mà điều này có thể hữu ích nếu bạn có nhiều mô hình dữ liệu trong một danh sách mà bạn cần phải cư từ một truy vấn SQL đơn.

Nó nên có thể sử dụng MÔ TẢ hoặc hiển thị các cột trên những bảng trước khi CHỌN truy vấn. Bằng cách đó, bạn biết tất cả các tên trường cho mỗi bảng. Điều này không giúp được bất kỳ xung đột tên trường tiềm năng nào.

Tôi sẽ không bình luận nếu đây là một ý hay hay không. Mỗi nhà phát triển phải quyết định nơi để vẽ ranh giới giữa tính linh hoạt, lười biếng và thực hành tốt.

0

Trong mysqli bạn có thể sử dụng chức năng php

mysqli_fetch_fields()

cho fieldinformations - vì vậy bạn sẽ có được tablename của mỗi collumn

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