Autor | Zpráva | ||
---|---|---|---|
szkepek Profil * |
#1 · Zasláno: 24. 4. 2007, 17:07:00
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 * |
#2 · Zasláno: 24. 4. 2007, 17:31:31
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 * |
#3 · Zasláno: 25. 4. 2007, 08:53:30
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 * |
#4 · Zasláno: 25. 4. 2007, 08:54:09
teda
--having pristupu=0 --having pristupu>0 :-) |
||
szkepek Profil * |
#5 · Zasláno: 25. 4. 2007, 18:03:42
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 |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0