मैं सार्वजनिक परिवहन प्रणाली के लिए एक प्रश्न लिखने की कोशिश कर रहा हूं जो मूल और गंतव्य स्टॉप संख्याओं को इनपुट करते समय मार्गों की एक सूची आउटपुट करेगा।नेस्टेड MySQL क्वेरीज़
यहाँ मेरी MySQL तालिका है:
mysql> select * from route_timings;
+----+--------------+-------------+--------------+----------------+
| ID | route_number | stop_number | arrival_time | departure_time |
+----+--------------+-------------+--------------+----------------+
| 1 | 54 | 1 | 10:00:00 | 10:05:00 |
| 2 | 54 | 2 | 11:00:00 | 11:05:00 |
| 3 | 54 | 3 | 12:00:00 | 12:05:00 |
| 4 | 55 | 3 | 13:00:00 | 13:05:00 |
| 5 | 55 | 4 | 14:00:00 | 14:05:00 |
| 6 | 55 | 5 | 15:00:00 | 15:05:00 |
| 7 | 60 | 3 | 10:00:00 | 10:05:00 |
| 8 | 60 | 2 | 11:00:00 | 11:05:00 |
| 9 | 60 | 1 | 12:00:00 | 12:05:00 |
+----+--------------+-------------+--------------+----------------+
9 rows in set (0.01 sec)
मेरा प्रश्न है:
mysql> desc route_timings;
+----------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------+------+-----+---------+----------------+
| ID | int(11) | NO | PRI | NULL | auto_increment |
| route_number | int(11) | NO | | NULL | |
| stop_number | int(11) | NO | | NULL | |
| arrival_time | time | YES | | NULL | |
| departure_time | time | YES | | NULL | |
+----------------+---------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
यहाँ नमूना मान हैं मैं ROUTE_NUMBER की कि stop_number 1 और stop_number 3 होते हैं सूचीबद्ध करने के लिए चाहते हैं, तो मैं इस तरह की एक क्वेरी लिखेंगे:
SELECT DISTINCT `route_number` FROM `route_timings` WHERE `route_number` IN (
SELECT `route_number` FROM `route_timings` WHERE `stop_number`=1
) AND `route_number` IN (
SELECT `route_number` FROM `route_timings` WHERE `stop_number`=3
);
हालांकि, उपर्युक्त क्वेरी केवल वापसी होगी रूट स्टॉप जिसमें दो स्टॉप होते हैं, न कि मार्ग जहां स्रोत स्टॉप (1) गंतव्य स्टॉप (3) से पहले पहुंच जाएगा।
क्वेरी वापसी होगी निम्नलिखित:
+--------------+
| route_number |
+--------------+
| 54 |
| 60 |
+--------------+
ROUTE_NUMBER 60 1 से शुरू नहीं करता है और 3 के लिए जाना लेकिन इसके बजाय 3 से शुरू होता है और 1. को जाता है कृपया किसी की मदद कर सकते हैं मुझे लगता है कि थोड़ा जोड़ने क्वेरी करें ताकि क्वेरी केवल server_numbers को आउटपुट करे जहां stop_number 1 के लिए आगमन_टाइम stop_number 3 के लिए आगमन_टाइम से कम है।
अग्रिम धन्यवाद। -Shain
हटाते हैं जो मैं ढूंढ रहा था। आपका बहुत बहुत धन्यवाद। –