Autor | Zpráva | ||
---|---|---|---|
laijk Profil |
#1 · Zasláno: 17. 12. 2013, 20:59:37
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 |
||
Joker Profil |
#2 · Zasláno: 17. 12. 2013, 21:01:05
laijk:
SELECT posts.*, users.username FROM … |
||
laijk Profil |
#3 · Zasláno: 18. 12. 2013, 00:13:20
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 |
#4 · Zasláno: 18. 12. 2013, 08:07:30
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 |
#5 · Zasláno: 18. 12. 2013, 14:09:06
Ď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 |
#6 · Zasláno: 18. 12. 2013, 16:38:25
laijk:
Pomocí JOINu přidáš další tabulku, countem spočítáš řádky v té tabulce a nastavíš GROUP BY na id toho postu. |
||
laijk Profil |
#7 · Zasláno: 18. 12. 2013, 17:03:59
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 * |
#8 · Zasláno: 18. 12. 2013, 17:47:00
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 |
#9 · Zasláno: 18. 12. 2013, 17:56:23
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 -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 |
||
Časová prodleva: 11 let
|
0