Autor Zpráva
szkepek
Profil *
ahoj vsichni,

verte mi, ze jste moje posledni nadeje, zkousim to uz nekolik dni a porad nic :-(.

Takze strucne:

Má jít o výběr uživatelů pro můj nový experimentální RS, který jsem se tentográt rozhodl přesedlat na PostgreSQL. Uživatelé tam budou jakoby registrování pod jakýsimi garanty, kteří potom budou dostávat body podle aktivity uživatelů, atd.. atd...

Potřebuju udělat SQL dotaz tak, aby se mi v jednom výběru ukázali

1) Uživatelé + u každého garant, kteří už stránky navštívili seřazeno podle příjmení
2) ti kteří zatím nenavštívili taky podle příjmení

tzn. aby to vypsalo:

uživatel garant přístupů
Franta Vopršálek Pepa Nový 20
Veronika Mladá Pepa Nový 1

pokud by tohle nešlo, stašilo byúplně, aby se vypsali všichni, kteří (ne)mají žádný záznam v tabulce statistiky

Díky za každou pomoc. Zkoušel jsem totálně všecko, zatím se mi povedl bod 1, ale ne zrovna elegantně, prtože to je přes WHERE clause a navíc se to neřadí podle jmen...

Adam

---------------------------------------------------------------------- ---------------------------
Mam 3 tabulky:

Uzivatele
id_uzivatel
id_garant // každý uživatel má něco jako "garanta," pod kterým je přidružen
jmeno
prijmeni
......

Garanti
id_garant
jmeno
prijmeni
....

Statistiky
id_uzivatel
id_stranka
id_sekce
session
ip
....
szkepek
Profil *
ještě dodám, skončil jsem zhruba u tohoto dotazu :

SELECT DISTINCT id_uzivatel, uzivatele.jmeno, uzivatele.prijmeni, garanti.jmeno, garanti.prijmeni FROM uzivatele
LEFT JOIN garanti USING(id_garant)
LEFT JOIN statistiky USING (id_uzivatel)
ORDER BY uzivatele.prijmeni

Tohle mi vybere vsecky, ted to potrebuju omezit na ty bez zaznamu ve statistikach a na ty se zaznamem...
Kajman_
Profil *
Zkuste něco takového pro dva seznamy s jednotlivým having..., případně si zkusite pohrát s order by, aby nahoře byli již přihlášení.

SELECT id_uzivatel, uzivatele.jmeno, uzivatele.prijmeni, garanti.jmeno, garanti.prijmeni, count(*) pristupu FROM uzivatele
LEFT JOIN garanti USING(id_garant)
LEFT JOIN statistiky USING (id_uzivatel)
group by id_uzivatel, uzivatele.jmeno, uzivatele.prijmeni, garanti.jmeno, garanti.prijmeni
--having count=0
--having count>0
ORDER BY uzivatele.prijmeni
Kajman_
Profil *
teda
--having pristupu=0
--having pristupu>0

:-)
szkepek
Profil *
diky, diky diiiiiiiky moc :-) funguje to perfektne. Mel jsem neustale problemy s agregatnimi fcemi a nenapadlo me nahazet vsecky vybery do GROUP BY :-)

jeste jednou dekuju
Toto téma je uzamčeno. Odpověď nelze zaslat.