
SQL_Pomoc
Zdravím,
mám nejspíše úplně triviální dotaz. Dělám databázi v Oracle. Zasekl jsem se nad úlohami a bohužel nemohu přijít, jak vytvořit dva pohledy.
Zkouším si vytvořit databázi, pro hotel.
1)Potřebuji vytvořit pohled, pro hotel. Kde mi to zobrazí dostupné pokoje, ale potřebuji to porovnat s aktuálním datem. Pokud je nějaký obsazený, aby se nezobrazil.
2) Mám v tabulce několik zákazníků, kteří udělali několik objednávek. Potřebuji nějakou funkcí sečíst opakující se data(Jméno+Příjmení) v tabulce, zkoušel jsem to přes sumu, ale vůbec mi to nejde.
3) Následně, jakou funkcí byste udělali filtr, který mi seřadí klienty od toho nejčastějšího?
Případně bych mohl postnout Data Model.
Pokud by vás něco napadlo, budu vděčný.
Předem vše děkuji a předem se omlouvám, pokud jsem se špatně vyjádřil.
Díky
Bez struktury tvých tabulek ti nemůžeme poradit.
Ad 2) a 3) co jsi zkoušel, že ti to nejde?
Zde mám data motel, kde jsou tabulky, PK i FK.
2N814.jpg
Neodpověděl jsi na vše. Po zběžném pohledu na schéma se mi zdá, že doklad by na sobě měl mít ID objednávky a nikoliv naopak.
Nějak podobně se snažím přijít na to, jak sečíst, opakující se ID_Navstevnik, abych to mohl seřadit, dle největšího počtu Objednávek. Bohužel s k tomu nemohu dopracovat. Poté udělat ten filtr.
Udělám to takto, abych to seřadil dle ID.
Select o.ID_Navstevnik, Count(*)
From Objednavka o
Group by o.ID_Navstevnik
Order by Count(*)
To mi seřadí ID_Navstevnik, od nejméně po nejvíce objednávek. Teď k tomu nějak potřebuji přidat ještě jméno, příjmení a první objednavku, kterou vytvořili, pokud jich mají více, ale s tím potřebuji nějak poradit. Nevím, čeho se chytit.
Select n.Jmeno, n.Prijmeni,o.ID_Navstevnik, Count(*)
From Objednavka o join navstevnik n on o.ID_Objednavka = n.ID_Navstevnik
Group by n.Jmeno, n.Prijmeni, o.ID_Navstevnik
Select n.Jmeno, n.Prijmeni,o.ID_Navstevnik, Count(*) as "PočetObjednavek"
From Objednavka o join Navstevnik n on n.id_navstevnik=o.id_navstevnik
Group by n.Jmeno, n.Prijmeni,o.ID_Navstevnik
Order by Count(*)
Takto mi to zobrazí jméno a sečte mi to objednavky každého. Potřebuji jen, aby to zobrazovalo od nejvíce objednávek, tedy obráceně.
Order by 4 desc
Díky moc, teď to funguje.
Nyní mi to zobrazí Jméno, Příjmení, ID, PočetObjednávek. Od toho, kdo jich má nejvíce.
Potřeboval bych k tomu nějak připsat ještě terminprijezdu. Tedy Termín prvního uskutečněného pobytu.
tedy joinout k tomu tabulku doklad a vytáhnout z toho skutecnyTerminPrijezdu
Programuješ to ty nebo my? Programování stylem jak se dělá tohle, a ještě tohle, a ještě tohle nemá moc smysl.
Ale je tu jedna možnost: it.poradna.net
Jak chceš napsat termín příjezdu v případě, že má 2 objednávky dopředu?
Jinak můžeš samozřejmě použít funkci MAX() a napsat termín nejvyšší objednávky nebo MIN() a termín nejbližší objednávky
Omlouvám se za OT a nechci rejpat, ale jestli nejsi schopen napsat ani takovou banalitu, možná bys měl zvážit své pokračování v tomto programu a profesi programátor obecně. Tohle je prostě základ.
Nejsem programátor a ani se tak nenazývám, ale dělám projekt do školy, jelikož s tím nemám takovou zkušenost a dostali jsme akorát zadání, kde téměř vše funguje pomocí samostudia, obracím se právě na poradnu. Jelikož jsem byl doma se zápalem plic, tak jsem ani to minimum ve škole nedostal.
Většinu jsem si našel na googlu a ve svých materiálech, jenže potřebuji doladit poslední zbytek a na ten už sám přijít nemohu.
Omlouvám se tedy, zda takto banální otázky. Jinak nestuduji IT, ale máme akorát předmět se základy dbs.