Treba mi 'algoritam' za rešavanje sledećeg tipa problema:
Baza:
+-----+----------+
| sid | meets_at |
+-----+----------+
| 1 | 09:00:00 |
| 2 | 14:00:00 |
| 6 | 14:00:00 |
| 7 | 10:00:00 |
| 9 | 14:00:00 |
| 14 | 14:00:00 |
| 22 | 10:00:00 |
| 22 | 14:00:00 |
| 23 | 15:00:00 |
| 24 | 09:00:00 |
| 29 | 14:00:00 |
| 30 | 14:00:00 |
| 39 | 14:00:00 |
| 39 | 17:00:00 |
| 41 | 14:00:00 |
| 43 | 14:00:00 |
| 48 | 10:00:00 |
| 52 | 15:00:00 |
+-----+----------+
Kao što se da primetiti, sid nije unikatan. Ono što treba da izvučem jesu svi sid-ovi koji u odgovarajućim meets_at poljima imaju makar jednom vrednost veću od 12:00:00 i makar jednom vrednost manju od 12:00:00. U ovom konkretnom slučaju, traženi rezultat je samo sid 22 (sid 39 u oba reda u meets_at polju ima vrednosti veće od 12:00:00, dok sid 22 ima jednom veću, a jednom manju vrednost, što je i traženo).
Ja sam ovo uspeo da rešim tako što sam napravio jednu tabelu sa svim redovima u kojima je meets_at manje od 12:00:00 i jos jednu gde je meets_at veće od 12:00:00, pa sam zatim ukombinovao te dve tabele, odnosno izvukao sid koji se pominje u obe.
Ipak, ne mogu da se otmem utisku da to može mnogo elegantnije i praktičnije da se reši (već u narednim problemima istog tipa sa kojima se srećem ovaj algoritam postaje vrlo nezgodan za implementaciju)?
OS: Windows XP
Server version: 5.0.18-nt
Protocol version: 10