Hirdetés
- Huawei Watch 3 Pro - óraátállítás
- Azonnali mobilos kérdések órája
- Cseresznyepiros és mokka barna Redmi Note 15-ök az újévre
- Samsung Galaxy A56 - megbízható középszerűség
- OnePlus 15 - van plusz energia
- Xiaomi 15T - reakció nélkül nincs egyensúly
- Visszatérnek a Samsung tervezte CPU-magok és GPU az Exynos 2800-ban?
- Yettel topik
- Mobilhasználat külföldön
- Apple iPhone 13 mini - miért nem veszik elegen?
Új hozzászólás Aktív témák
-
Jester01
veterán
válasz
bbTamas77
#1863
üzenetére
Fentiek alapján nap-óra-perc-másodperc például imígyen megkapható:
SELECT CONCAT((UNIX_TIMESTAMP('2013-12-24 18:00') - UNIX_TIMESTAMP('2013-08-01 18:49')) DIV 86400, ' ',
SEC_TO_TIME((UNIX_TIMESTAMP('2013-12-24 18:00') - UNIX_TIMESTAMP('2013-08-01 18:49')) % 86400))Kicsit csúnya, hogy kétszer kell benne elvégezni a kivonást de a SEC_TO_TIME az csak korlátozott különbséget tud egyébként kezelni. A DATEDIFF pedig buta mert az idő részt figyelmen kívül hagyja.
-
Jester01
veterán
válasz
bbTamas77
#1853
üzenetére
A probléma az, hogy két időpont között ebben a formában lehet, hogy azonos eredményt kapsz amikor különböző időtartam volt valójában, hiszen az év illetve a hónapok hossza különbözhet.
Ha valami 1 hónapja volt, az függ attól az előző hónap milyen hosszú volt. Ha ez neked jó, akkor nincs gond. -
Jester01
veterán
válasz
WonderCSabo
#741
üzenetére
Az i.first_name, i.last_name akkor sem lesz kiválasztható.
-
Jester01
veterán
select t1.*,t2a.listing_field_value field1,t2b.listing_field_value field2 from t1,t2 t2a,t2 t2b where t2a.user_id = t1.user_id and t2a.listing_id = t1.listing_id and t2a.listing_field_name = 'field1' and t2b.user_id = t1.user_id and t2b.listing_id = t1.listing_id and t2b.listing_field_name = 'field2';
-
Jester01
veterán
válasz
Apollo17hu
#541
üzenetére
Hát mert nem mondtad milyen adatbázisod van ... mysql esetén működik, kipróbáltam.
-
Jester01
veterán
válasz
Apollo17hu
#539
üzenetére
SELECT A FROM t GROUP BY A HAVING COUNT(DISTINCT B) > 1
Ez persze az A értékeket adja meg, de innen gondolom már megy.
-
Jester01
veterán
válasz
vakondka
#510
üzenetére
A join miatt termék-attribútum párokat kapsz, mégpedig annyit ahány egyezés volt az attribútum (tehát nem a termék!) szerint. Azt kell megnézni, hogy melyik termékhez van pontosan annyi sor ahány feltétel volt, ezért van a group by és a having. Ha lehagyod azt a részt akkor láthatod hogy néz ki a join eredménye. Ha több feltételed van, akkor azt a kettes számot ott át kell írni értelemszerűen.
-
Jester01
veterán
válasz
vakondka
#508
üzenetére
Szerintem elég lesz 1 join is.
SELECT pef.products_id
FROM products_to_products_extra_fields pef
LEFT JOIN products p ON p.products_id = pef.products_id
WHERE
(pef.products_extra_fields_id = 2 AND pef.products_extra_fields_value = 'piros') OR
(pef.products_extra_fields_id = 4 AND pef.products_extra_fields_value = '3')
GROUP BY pef.products_id
HAVING count(*) = 2 -
Jester01
veterán
Tulajdonképpen ha van string összefűzésre aggregáló függvény akkor meg lehet oldani egy GROUP BY kitétellel. Nem mondtad milyen adatbázis, mysql-ben van ilyen GROUP_CONCAT néven. MS SQL-ben és Oracle alatt is lehet rá workaroundot csinálni gugli szerint. Úgy látszik kicsit elhamarkodottan állítottam, hogy nem lehet.

-
Jester01
veterán
1. Az alias nem befolyásolja a where-t, ott attól még nyugodtan lehet használni az eredeti nevet is.
2. ez valami rettentő nagy eredményt ad: Ugyanis az al-selectben ha nem írod ki explicit a táblanevet/aliast akkor az a belső táblá(k)ra vonatkozik. Tehát tulajdonképpen azonosságot írtál (eltekintve attól, hogy NULL != NULL). Helyesen a külső selectben kell megadni tábla aliast és arra hivatkozni. Így ni:select bla, bla2, bla3, bla4,
(select count(*) from tabla where bla = kulso.bla) from tabla kulso where ... -
Jester01
veterán
válasz
Louloudaki
#257
üzenetére
Az adatmennyiségtől erősen függ. Sok rekord esetén a join gyorsabb lesz.
-
Jester01
veterán
SELECT title, name FROM videos, members, borrows WHERE videos.videoid = borrows.videoid AND members.memberid = borrows.memberid AND members.dateofbirth = (SELECT min(members.dateofbirth) FROM borrows, members WHERE borrows.videoid=videos.videoid AND borrows.memberid = members.memberid)
Ezzel az lehet még a baj, hogy több azonos korú tag is kivehette a filmet, a fenti lekérdezés ilyenkor visszaadja mindet. Ha csak egy kell, akkor még egy group by-t lehet a végére akasztani.
Érdekességképpen egy hack megoldás, amibe nem kell al-select:
SELECT SUBSTR(MIN(TO_CHAR(members.dateofbirth, 'YYYY-MM-DD') || members.name), 11), videos.title
from borrows, videos, members
WHERE borrows.video=videos.videoid AND borrows.member=members.memberid
GROUP BY videos.title; -
Jester01
veterán
válasz
Drótszamár
#224
üzenetére
Ja az megy. Azt hittem másik szerverhez kell kapcsolódni.

-
Jester01
veterán
válasz
Drótszamár
#217
üzenetére
Nem lesz jó a group by miatt.
-
Jester01
veterán
válasz
Drótszamár
#215
üzenetére
Mysql-re egyelõre csak ezt találtam: [link]
-
Jester01
veterán
válasz
Drótszamár
#213
üzenetére
Ez adatbáziskezelõtõl függ.
-
Jester01
veterán
Izé, ha azokat kell kiírni amiket egy évnél nem régebben vagy soha nem vettek ki, akkor úgyis van where szûrés, szóval a decode-ban már nem kell vele foglalkozni. Ha a dateofcreation dátum típusú, akkor azt lehet, hogy még szöveggé is illene konvertálni.
Kb valami ilyesmire gondoltam:
SELECT ... DECODE(borrows.dateofcreation, NULL, 'SOHA', TO_CHAR(borrows.dateofcreation)) ... WHERE borrows.dateofcreation IS NULL OR borrows.dateofcreation > sysdate - 365 -
Jester01
veterán
válasz
concret_hp
#204
üzenetére
Összakapcsolod a 2 táblát (join), csoportosítasz vevő szerint és szűrsz a darabszámra (HAVING COUNT(*) = 2)
-
Jester01
veterán
Új hozzászólás Aktív témák
- Huawei Watch 3 Pro - óraátállítás
- Milyen videókártyát?
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Azonnali mobilos kérdések órája
- Parkside szerszám kibeszélő
- Házimozi belépő szinten
- Konzol Screenshot
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- További aktív témák...
- Nikon D3 Profi szett
- Vadonatúj, bontatlan iScooter i9Max elektromos roller, 1 év gari 35 km/h
- ADATA XPG Lancer Blade 32GB (2x16GB) DDR5 6000MHz CL34 - XMP/EXPO - 120 hó garancia
- Kingston FURY Beast 64GB (2x32GB) DDR5 6400MHz CL32 - XMP/EXPO - 120 hó garancia
- Kingston FURY Beast 32GB (1x32GB) DDR5 5200MHz CL40 - XMP/EXPO - 120 hó garancia
- HIBÁTLAN iPhone 14 Pro 128GB Space Black -1 ÉV GARANCIA -Kártyafüggetlen, MS3590
- magyar billentyűzet - 136 - Lenovo Legion Pro 7 (16IRX9H) - i9-14900HX, RTX 4080 - 4 ÉV GARANCIA!
- magyar billentyűzet - 165 - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4080
- BESZÁMÍTÁS! ASRock Z370 i7 8700 16GB DDR4 512GB SSD RX 6600XT 8GB Rampage SHIVA Thermaltake 550W
- Xiaomi 15T 256GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest




