Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



jak na dotaz

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: jak na dotaz

Autor: RePRO

2:04:59 21.11.2011

Jasně, moc Vám děkuju. Jste velký znalec, zasloužíte si můj obdiv.
Pěkný den.

Citovat příspěvek

 

Re: jak na dotaz

Autor: grafnev

21:02:05 20.11.2011

Jo jo moje chyba, v on podmince byla promenna z tabulky, kterou nevybiram ... spravne i s tim by ta cast byla:
(SELECT COUNT(*) AS pocetClanku, autor FROM article where reg = 1 group by autor) b
on a.nick = b.autor

Jinak ted kdyz na to koukam, tak tam muzete dat inner join, pokud trvate na tom reg = 1 jako filtraci ... obecne se s tim setkavam casto:

select
neco
from t1
left join t2
where t2.promenna = nejakahodnota

Pokud do where pro t2 napisu neco jineho nez is null pripadne is not null v tu chvili se z left join t2 stava technicky inner join t2 :).

Citovat příspěvek

 

Re: jak na dotaz

Autor: RePRO

17:08:29 19.11.2011

Už vyřešeno. Moc děkuju. Funguje to tak jak má bez toho reg. To tam ani není potřeba filtrovat.

Citovat příspěvek

 

Re: jak na dotaz

Autor: RePRO

16:41:21 19.11.2011

Dobrý den, mockrát Vám děkuju. Ale ještě to není úplně dobře.
Píše mi to: Unknown column 'b.reg' in 'on clause'. To znamená, že mám v ON klauzuli b.reg, ale to já spíše potřebuji do klauzule WHERE. V klauzuli ON stačí samozřejmě jenom tabulky pospojit dle klíčů.

Co se týče jak jste mi napsal: "ale nejak mi tam porad chybi ten autor, ke kteremu se to ma pocitat.
SELECT COUNT(*) AS pocetClanku FROM article - samotny vybere pocet vsech clanku bez ohledu na autora".

Co tím myslíte?

Citovat příspěvek

 

Re: jak na dotaz

Autor: grafnev

1:23:41 19.11.2011

Nevim co mate za DB a zda umoznuje ty grupovaci selecty ve vyberu ...
kazdopadne by melo fungovat, ze si vyrobite 3 podselecty s temi udaji a ty pak pripojite k userovi:

[code]
SELECT a.nick,
b.pocetClanku
c.pocetKomentu
d.soucetDuvery/d.pocetDuvery as duvera
FROM user a
LEFT JOIN
(SELECT COUNT(*) AS pocetClanku, autor FROM article group by autor) b
on a.nick = b.autor and b.reg = 1
LEFT JOIN
(SELECT COUNT(*) AS pocetKomentu, autor FROM comment group by autor) c
on a.nick = c.auto and c.reg = 1
LEFT JOIN
(SELECT
COUNT(*) AS pocetDuvery
,SUM(hodnota) AS soucetDuvery
,idUser
FROM confidence
group by idUser) d
on a.ID = d.idUser
;

[/code]

Pripadne, pokud to DB umi tak misto
SELECT COUNT(*) AS pocetClanku FROM article
lze pouzit analytickou funkci
count(*) over (partition by autor) as pocetClanku


Nebo vase DB umi nejakou takovou konstrukci o kterou se snazite, ale nejak mi tam porad chybi ten autor, ke kteremu se to ma pocitat.
SELECT COUNT(*) AS pocetClanku FROM article - samotny vybere pocet vsech clanku bez ohledu na autora.

Citovat příspěvek

 



Důvěra se pro každého uživatele vypočítá takto: duvera = soucetDuvery/pocetDuvery;
Potřebuji dotaz... Zkoušel jsem tento dotaz, ale někde jsou chyby:

// a... user tabulka
// b... článek tabulka
// c... koment tabulka
// d... důvěra tabulka
$sqldotaz = mysql_query("SELECT a.nick,
(SELECT COUNT(*) AS pocetClanku FROM article),
(SELECT COUNT(*) AS pocetKomentu FROM comment),
(SELECT COUNT(*) AS pocetDuvery, SUM(hodnota) AS soucetDuvery FROM confidence)
FROM user a
LEFT JOIN article b ON a.nick = b.autor
LEFT JOIN comment c ON a.nick = c.autor
LEFT JOIN confidence d ON a.ID = d.idUser
WHERE b.reg = '1'
AND c.reg = '1'
");

Důvěra se pro každého uživatele vypočítá takto: duvera = soucetDuvery/pocetDuvery; Potřebuji dotaz... Zkoušel jsem tento dotaz, ale někde jsou chyby: // a... user tabulka // b... článek tabulka // c... koment tabulka // d... důvěra tabulka $sqldotaz = mysql_query("SELECT a.nick, (SELECT COUNT(*) AS pocetClanku FROM article), (SELECT COUNT(*) AS pocetKomentu FROM comment), (SELECT COUNT(*) AS pocetDuvery, SUM(hodnota) AS soucetDuvery FROM confidence) FROM user a LEFT JOIN article b ON a.nick = b.autor LEFT JOIN comment c ON a.nick = c.autor LEFT JOIN confidence d ON a.ID = d.idUser WHERE b.reg = '1' AND c.reg = '1' ");

Citovat příspěvek

jak na dotaz

Autor: RePRO

0:54:28 19.11.2011

Zdravím,
mám 4 tabulky (user = uživatel, article = článek, comment = koment, confidence = důvěra).

- user (ID, nick);
- article (autor, reg);
- comment (autor, reg);
- confidence (idUser, hodnota);

A vše je spojené s hlavní tabulkou user, to znamená:
user.nick = article.autor;
user.nick = comment.autor;
user.ID = confidence.idUser;

A já potřebuju zobrazovat toto:

[#] [přezdívka] [důvěra] [napsal zpovědí] [napsal reakcí] [#] [přezdívka] [důvěra] [napsal zpovědí] [napsal reakcí]

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: