Tôi có vấn đề này tôi nghĩ bạn có thể giúp tôi với.
PS Tôi không chắc chắn cách gọi này, vì vậy nếu bất cứ ai tìm thấy một tiêu đề phù hợp hơn, xin vui lòng chỉnh sửa.
Lý lịch
- Tôi đang làm ứng dụng này để tìm kiếm các tuyến xe buýt.
- Các tuyến xe buýt là một số có 3 chữ số, và là duy nhất và sẽ không bao giờ thay đổi.
- Yêu cầu là có thể tìm kiếm các dòng từ điểm dừng A đến điểm dừng B.
- Giao diện người dùng đã thành công trong việc gợi ý người dùng chỉ sử dụng tên dừng hợp lệ.
- Yêu cầu là có thể hiển thị nếu một tuyến có một đường trực tiếp và nếu không, hãy hiển thị kết hợp 2 dòng và thậm chí 3 dòng.
Thí dụ:
Tôi cần đi từ điểm A đến điểm D. Chương trình sẽ hiển thị:
- Nếu có một đường dây AD trực tiếp.
- Nếu không, hiển thị thay thế, combo 2 dòng, chẳng hạn như AC, CD.
- Nếu không có bất kỳ combo 2 dòng nào, hãy tìm kiếm các combo 3 dòng: AB, BC, CD.
Tất nhiên, ứng dụng sẽ hiển thị số dòng xe buýt, cũng như khi nào cần chuyển đổi xe buýt.
Tôi có gì:
Cơ sở dữ liệu của tôi được cấu trúc như sau (đơn giản hóa, cơ sở dữ liệu thực tế bao gồm các vị trí và thời gian và không có gì):
+-----------+
| bus_stops |
+----+------+
| id | name |
+----+------+
+-------------------------------+
| lines_stops_relationship |
+-------------+---------+-------+
| bus_line | stop_id | order |
+-------------+---------+-------+
Nơi lines_stops_relationship
mô tả mối quan hệ nhiều-nhiều giữa các tuyến xe buýt và các điểm dừng.
Thứ tự, biểu thị thứ tự dừng xuất hiện trong một dòng duy nhất. Không phải tất cả các dòng đi qua lại và thứ tự có ý nghĩa (điểm A với thứ tự 2 đến sau điểm B với thứ tự 1).
Vấn đề
- Chúng tôi tìm hiểu xem một dòng có thể đi qua tuyến đường đủ dễ dàng. Chỉ cần tìm kiếm một dòng duy nhất đi qua cả hai điểm theo đúng thứ tự.
- Làm thế nào tôi có thể tìm thấy nếu có một kết hợp 2/3 dòng? Tôi đã suy nghĩ để tìm kiếm một dòng phù hợp với điểm dừng nguồn, và một điểm dừng dừng, và xem liệu tôi có thể có một điểm dừng chung giữa chúng không, nơi người dùng có thể chuyển đổi xe buýt. Làm thế nào để tôi nhớ rằng dừng lại?
- Combo 3 dòng thậm chí còn phức tạp hơn, tôi tìm một dòng cho nguồn, và một dòng cho đích, và sau đó thì sao? Tìm kiếm một dòng có 2 điểm dừng tôi đoán, nhưng một lần nữa, Làm thế nào để tôi nhớ các điểm dừng?
tl; dr
Làm cách nào để nhớ kết quả từ truy vấn để có thể sử dụng lại? Tôi hy vọng sẽ đạt được điều này trong một truy vấn duy nhất (đối với mỗi truy vấn cho các tuyến 1 dòng, truy vấn cho 2 và truy vấn cho các kết hợp 3 dòng).
Lưu ý: Tôi không phiền nếu ai đó đề xuất một cách tiếp cận hoàn toàn khác với những gì tôi có, tôi sẵn sàng cho bất kỳ giải pháp nào.
Sẽ trao tặng bất kỳ sự trợ giúp nào với cookie và upvote. Cảm ơn trước!