के साथ एक चुनिंदा क्वेरी में केस, WHEN, THEN, END का उपयोग करके मैं बेसबॉल संबंधित वेबसाइट पर काम कर रहा हूं। मैं दो बेसबॉल टीमों के लिए एक बल्लेबाजी लाइनअप के साथ एक मेज है:MySQL
- बल्लेबाजी क्रम 1-9 — दूर:
+----+----------+--------------+--------+ | id | playerId | battingOrder | active | +----+----------+--------------+--------+
बल्लेबाजी क्रम 1 और 20. यह निम्न तर्क से मेल खाती है के बीच एक पूर्णांक है टीम लाइनअप
- बल्लेबाजी क्रम 10 — दूर टीम घड़ा
- बल्लेबाजी क्रम 11-19 — होम टीम लाइनअप
- बल्लेबाजी क्रम 20 — होम टीम घड़ा
सक्रिय क्षेत्र एक tinyint 0 या 1, टीले पर घड़ा और थाली पर बल्लेबाज का प्रतिनिधित्व करता है।
ज्ञात तथ्य: हमेशा एक टीम से एक सक्रिय पिचर और विपरीत टीम से एक सक्रिय बल्लेबाज रहेगा।
मैं एक प्रश्न है कि एक घर टीम के खिलाड़ी है कि battingOrder में अगले बल्लेबाज से मेल खाती है के लिए एक पंक्ति रिटर्न लिखने के लिए की जरूरत है। (एक है कि कि के बाद होता सक्रिय बल्लेबाज के battingOrder)
उदाहरण:
- तो battingOrder 13 में खिलाड़ी सक्रिय है, क्वेरी बल्लेबाजी क्रम में खिलाड़ी लौट जाना 14.
- हैं बल्लेबाजी में खिलाड़ी ऑर्डर 1 सक्रिय है, क्वेरी बल्लेबाजी क्रम 11 में खिलाड़ी को वापस करनी चाहिए (लाइनअप टीम के लिए पहले खिलाड़ी को वापस लूप)।
मैं पहले एक मामला क्वेरी उपयोग नहीं किया है, लेकिन मैं निम्नलिखित के साथ आया था:
SELECT *
FROM lineups
WHERE battingOrder =
CASE (
SELECT battingOrder
FROM lineups
WHERE battingOrder > 10 AND active = 1
LIMIT 1
)
WHEN 11 THEN 12
WHEN 12 THEN 13
WHEN 13 THEN 14
WHEN 14 THEN 15
WHEN 15 THEN 16
WHEN 16 THEN 17
WHEN 17 THEN 18
WHEN 18 THEN 19
WHEN 19 THEN 11
END
LIMIT 1;
यह काम करने के लिए लगता है, लेकिन क्या बढ़त मामलों और/या नुकसान मैं चला गया है में? क्या यह कुशल है? मैं अपनी समस्या के समाधान में दिलचस्पी रखने वाला कण हूं जो घोंसला वाली क्वेरी का उपयोग नहीं करता है।
यह सही नहीं लगता है। आप आईडी कॉलम क्यों देख रहे हैं? यह बल्लेबाजी ऑर्डर कॉलम होना चाहिए। – Stephen
@ स्टीफन - हां। यह एक टाइपो है। फिक्स्ड। – Thomas
ठीक है, मैंने आपकी क्वेरी verbatim का कोई परिणाम नहीं दिया है। मेरे पास बल्लेबाजी ऑर्डर स्थिति 19 में सक्रिय है, लेकिन आपके दोनों प्रश्नों का कोई परिणाम नहीं है। – Stephen