Autor Zpráva
laijk
Profil
Potreboval by som aby mi SELECT vrátil všetky údaje z jednej tabuľky, a z druhej iba jeden stlpec..
tabuľky:
POSTS:id,author_id...
USERS:id_username...
SELECT * FROM POSTS LEFT JOIN USERS ON POSTS.author_id = USERS.id
-ešte doplním, že porovnávam stlpce "id" z obidvoch tabuliek, ale z tabuľky USERS potrebujem vrátiť IBA STĹPEC username, teda aby po selekte nepoznalo stlpec id z tabuľky USERS, ďakujem za rady :)
Joker
Profil
laijk:
SELECT posts.*, users.username FROM …
laijk
Profil
Funguje, ale chcem sa ešte niečo spýtať, doteraz som to mal bez kľúčov medzi tabuľkami, teraz som správne ponastavoval kľúče, ako mi to uľahčí prácu s databázou?
Kajman
Profil
Cizí klíče pouze ohlídaji integritu dat. V tomto případě to znamená, že by nemělo jít nastavit tabulce posts číslo autora, který není v tabulce users.
laijk
Profil
Ďakujem za vysvetlenie, nechcem vytvárať novú tému lebo ide o doplnenie tejto, pridal som novú tabuľku, takže teraz to vyzerá takto:
POSTS:id,author_id
USERS:id,username
COMMENTS:id,post_commented
-to post_commented je id, ktoré patrí stlpcu id v tabuľke POSTS. A teraz potrebujem spojiť 3 tabuľky, k tomuto selectu:
SELECT posts.*, users.username FROM posts LEFT JOIN users ON posts.author_id = users.id ORDER BY id DESC potrebujem nejako dostať aby select poznal aj počet riadkov v tabuľke COMMENTS, ktorých stlpec post_commented sa rovná stlpcu id v tabuľke POSTS, takže tam potrebujem dať asi druhú podmienku, neviem či sa to vôbec dá spraviť... pre ilustráciu:
Mám hlavnú stránku kde sa zobrazujú posledné POSTY, a k tomu sa pripíše aj názov autora postu (toto už mám), ale potrebujem tam napísať aj počet komentárov k jednotlivým POSTOM..
Radek9
Profil
laijk:
Pomocí JOINu přidáš další tabulku, countem spočítáš řádky v té tabulce a nastavíš GROUP BY na id toho postu.
laijk
Profil
Radek9:
Nevim ako to sformulovať, toto mi hádže chybu..
SELECT posts.*, users.username COUNT(post_commented) FROM posts LEFT JOIN users, comments ON posts.author_id = users.id GROUP BY posts.id ORDER BY id DESC
Monkeys
Profil *
laijk:

V selecte ti chyba ciarka + som si neni isty ci za left join mozu ist az 2 tabulky
Pouzivaj aliasy

SELECT COUNT(c.post_commented) AS pc,  p.stlpecA, p.stlpecB, u.username  FROM posts p LEFT JOIN users u ON p.author_id = u.id LEFT JOIN comments c ON spojenie GROUP BY p.id ORDER BY p.id DESC

je to len nacrt, musel by som vediet co konkretne zamyslas.


M.
laijk
Profil
Skúšam všetko možné, ale nejde mi to :( ja to robím vlastne cez dibi, neviem či to patrí do tohto fora, ak nie, prepíšem to:
SELECT COUNT([post_commented]) AS pc, [posts].*, [users].username FROM [posts] p LEFT JOIN [users] u ON p.author_id = u.id LEFT JOIN [comments] c GROUP BY p.id ORDER BY p.id DESC
je to len nacrt, musel by som vediet co konkretne zamyslas.
-spomenul som to vyššie: Mám hlavnú stránku kde sa zobrazujú posledné POSTY, a k tomu sa pripíše aj názov autora postu (toto už mám), ale potrebujem tam napísať aj počet komentárov k jednotlivým POSTOM..
Kajman
Profil
Pokud se vám nedaří spojení, můžete použít i korelovaný poddotaz (ten je občas i vhodnější, pokud se použije i limit).
SELECT posts.*,
       users.username,
       (SELECT Count(*)
        FROM   comments c
        WHERE  c.post_commented = posts.id) komentaru
FROM   posts
       LEFT JOIN users
              ON posts.author_id = users.id
ORDER  BY id DESC  

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: