मैं एक वाम करने के लिए कोशिश कर रहा हूँ में हाइबरनेट क्वेरी लैंग्वेज में शामिल हों, MySQL में मैं इस प्रकार कर सकते हैं:बायाँ में हाइबरनेट क्वेरी लैंग्वेज शामिल हों
चयन * day_timetable_timeslots से टी वाम d.start_time पर golfnine_date_time_entity घ में शामिल हों = t.start_time
मेरी तालिका में day_timetable_timeslots मेरे पूरे दिन 15 मिनट की वृद्धि के साथ कई बार अंतराल होता है। जैसे। 00:00:00, 00:15:00, 00:30:00, ... दिन के अंत तक। तो यह मुझे किसी भी मिलान करने वाले golfnine_date_time_entity के साथ हर समय अंतराल दिखाता है, लेकिन मैं यह नहीं समझ सकता कि हाइबरनेट क्वेरी भाषा में इसे कैसे किया जाए।
वैसे मैं निम्नलिखित एचक्यूएल द्वारा बाएं जॉइन कर सकता हूं।
o.id का चयन करें, book.id ओ छोड़ दिया बाहरी DayTimetableTimeslots से o.bookings पुस्तक में शामिल होने के जहां o.id> 0
मैं नहीं जानता कि मैं क्यों o.id डाल चाहिए> 0 वहाँ, लेकिन यह काम करता है।
हालांकि, मैं केवल book.id का चयन करना चाहता हूं जहां बुकिंग की स्थिति है। मैंने कोशिश की:
o.id का चयन करें, book.id DayTimetableTimeslots से ओ छोड़ दिया बाहरी o.bookings पुस्तक में शामिल होने के जहां o.id> 0 और book.dateTime.startDate> '2010-01-01'
लेकिन यह सही ढंग से काम नहीं करता है, यह केवल कुछ दिन टिमेटेबल टाइम्सलॉट दिखाता है, लेकिन उनमें से सभी नहीं, जैसा कि ऐसा करना है।
मैं मूल रूप से एचक्यूएल में यह mysql क्वेरी करना चाहता हूं।
day_timetable_timeslots से start_time_sequence, all_start_time रूप t.start_time, डी के रूप में t.id का चयन करें। * टी बाईं तरफ d.start_time = t.start_time और t.customer_id = d.customer_id और d.start_date = 2010 golfnine_date_time_entity घ में शामिल हों -01-24 ' कहां t.customer_id = 11
धन्यवाद, फिलिप
mysql में मैं निम्नलिखित और यह मेरे अपने प्रारंभ समय के खिलाफ सभी बुकिंग चलता कर सकते हैं। सभी प्रारंभ समय day_timetable_timeslots में संग्रहीत होते हैं।
चयन t.start_time, d.id day_timetable_timeslots टी से छोड़ दिया golfnine_date_time_entity घ शामिल हों d.start_time पर = t.start_time
'00:00:00', NULL
'00:15:00', NULL
'00:30:00', NULL
'00:45:00', NULL
'01:00:00', '443'
'01:15:00', NULL
'01:30:00', NULL
'01:45:00', NULL
'02:00:00', '444'
... पूरे दिन के लिए, यह golfnine_date_time_entity की आईडी ऊपर से मेल खाता है day_timetable_timeslots में समय के साथ।
इस mysql क्वेरी के बारे में अच्छी बात यह है कि मैं बुकिंग पर कुछ मानदंड निर्धारित कर सकता हूं, उदाहरण के लिए।
चयन t.id, t.start_time, day_timetable_timeslots टी से d.id बायाँ शामिल हों golfnine_date_time_entity डी पर d.start_time = t.start_time और t.customer_id = d.customer_id और d.start_date = '2010-01-24 ' जहां टी।CUSTOMER_ID = 11
मैं
... lots of data then
'31', '07:15:00', NULL
'32', '07:30:00', NULL
'33', '07:45:00', NULL
'34', '08:00:00', '501'
'35', '08:15:00', NULL
'36', '08:30:00', NULL
'37', '08:45:00', NULL
'38', '09:00:00', NULL
'39', '09:15:00', NULL
... lots more data
मिलता तो इसके केवल उस तिथि निर्दिष्ट और ग्राहक आईडी पर बुकिंग दिखा।
इसका इतना HQL में यह करने के लिए कठिन ...
इस में शामिल होने मैं HQL में चाहते हैं।
o.id का चयन करें, b.id DayTimetableTimeslots से ओ, LegacyDateTimeEntity ख जहां b.customer.id = 11 और b.startDate = '2010-02-07' और o.startTime = b.startTime
यह एसक्यूएल देता है।
select
daytimetab0_.id as col_0_0_,
legacydate1_.id as col_1_0_
from
day_timetable_timeslots daytimetab0_,
golfnine_date_time_entity legacydate1_
where
legacydate1_.customer_id=11
and legacydate1_.start_date='2010-02-07'
and daytimetab0_.start_time=legacydate1_.start_time
लेकिन - यह केवल 1 पंक्ति रिटर्न क्योंकि केवल एक golfnine_date_time_entity से मेल खाता है, मैं day_timetable_timeslots पंक्तियों लौटे के सभी चाहते हैं।
तो मैंने एचक्यूएल में कोशिश की।
ओआईआईडी, ओ.बुकिंग्सइज़ का चयन करें डे टिमेटेबल टाइम्सलॉट्स से ओ ओ। बुकिंग्स में शामिल हों obookings book dt.customer.id = 11 और dt.startDate = '2010-02-29' के साथ book.dateTime dt में शामिल हों। 1 = 1
जो दुख की बात है कि अभिव्यक्ति के साथ अनदेखा करना प्रतीत होता है।
यह इस SQL को देता है।
select
daytimetab0_.id as col_0_0_,
(select
count(bookings3_.timeslot_id)
from
golfnine_booking bookings3_
where
daytimetab0_.id=bookings3_.timeslot_id) as col_1_0_
from
day_timetable_timeslots daytimetab0_
left outer join
golfnine_booking bookings1_
on daytimetab0_.id=bookings1_.timeslot_id
left outer join
golfnine_date_time_entity legacydate2_
on bookings1_.date_time_id=legacydate2_.id
and (
legacydate2_.customer_id=11
and legacydate2_.start_date='2010-02-29'
)
where
1=1
कौन सा सिर्फ तालिकाओं के बीच सभी मिलते-जुलते रिश्ते जुड़ जाता है और ध्यान नहीं देता legacydate2_.customer_id = 11 और legacydate2_.start_date = '2010/02/29'
मैंने पाया कि यह काम करने लगता है । नोट मैं डीटी 2 का संदर्भ दे रहा हूं जो खंड के साथ है।
विशिष्ट o.startTime, dt2.id, book.uniqueDateTimeResource का चयन करें DayTimetableTimeslots से o obookings पुस्तक में शामिल हो गए। Book.deleted = 0 dt2.startDate = '2010-01-19' के साथ book.dateTime dt2 में शामिल हो गए और dt2.deleted = 0
क्या आप अपने एचक्यूएल द्वारा उत्पन्न एसक्यूएल दिखा सकते हैं, और आउटपुट के साथ कुछ नमूना डेटा परिणाम और वांछित आउटपुट? – RMorrisey
धन्यवाद, मैंने अपने प्रश्न पर और टिप्पणियां जोड़ दीं। – Phil