2015-12-01 10 views
5

Tôi có truy vấn SQL được cho là lấy chương trình, lớp và năm từ Bảng Học sinh của tôi, được cung cấp hai cột X và Y của các số. Ví dụ, nếu x = 3 và Y = 4, có nghĩa là có kết nối giữa sinh viên 3 và 4 và tôi sẽ chọn chương trình, lớp học, năm từ học sinh 4, vì lợi ích của đối số của chúng tôi.Không thể chọn các hàng riêng lẻ mà không cần nhóm

Vấn đề là, nếu có hai hàng trong đó X và Y đều bình đẳng, ví dụ: Row 1: X = 3, Y = 4 Row 2: X = 3, Y = 4

(bởi vì có thể có hai kết nối), lệnh SELECT sẽ chỉ chọn chương trình, lớp và năm chỉ là ONCE, không phải hai lần. Tôi muốn nó để lựa chọn lặp đi lặp lại riêng lẻ, vì vậy vòng lặp của tôi sau đó sẽ lặp lại hai lần.

Tôi hy vọng tôi đã tự làm rõ!

$SQL = " 
    SELECT Programme, Class, Year 
    FROM Students 
    WHERE Student_ID in (
    SELECT X 
    FROM SearchStudent 
    WHERE Y= '$id' 
)"; 
+0

Hãy thử tham gia THAM GIA thay vào đó, nó có thể sẽ nhanh hơn trong hầu hết các trường hợp. – Uueerdo

+0

mm ok, tôi sẽ cấu trúc nó như thế nào? – Nockingam

+0

đăng một ví dụ làm câu trả lời – Uueerdo

Trả lời

1

Các THAM GIA tôi đã đề cập trong bình luận có thể sẽ giống như thế này:

SELECT s.Programme, s.Class, s.Year 
FROM SearchStudent AS ss 
INNER JOIN Students AS s ON ss.X = s.Student_ID 
WHERE ss.Y= '$id' 
; 

Và đừng quên để khử trùng đầu vào của bạn (ví dụ: đảm bảo $ id không có ' trong đó); hoặc tốt hơn, hãy xem xét các truy vấn được tham số hóa

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