Autor | Zpráva | ||
---|---|---|---|
oBc Profil * |
#1 · Zasláno: 11. 11. 2007, 21:14:28
Zdravim,
mam problem, ktory vam popisem: 1.) Ako by sa dalo toto zjednotit: $result = $conn -> query("SELECT id FROM fotky where iduser = 34 and poradie = 2"); $idfoto = $result -> fetch_assoc(); $komentare = $conn -> query("SELECT * FROM komentare where iduser = 34 and idfotka=".$idfoto['id']." ORDER by datum DESC"); 2.) A potom z toho dotazu ziskam: $komentare = $conn -> query("SELECT * FROM komentare where iduser = 34 and idfotka=".$idfoto['id']." ORDER by datum DESC"); $komentare['text'] $komentare['iduser'] kde to $komentare['iduser'] je id uzivatela ktory je v tabulke 'uzivatelia' a ja by som chcel vypisat jeho meno. Viem, ze by sa to malo robit nejako cez FLOAT, ale vazne netusim ako, som zaciatocnik. Dakujem za akukolvek odpoved. Upresenenie: Mame tabulky: komentare (id, iduser, text) fotky (id, iduser, poradie, fotka) usery bool (id, username) |
||
Alphard Profil |
#2 · Zasláno: 11. 11. 2007, 22:21:55
co tohle?
SELECT * FROM komentare where iduser = 34 and idfotka = (SELECT id FROM fotky where iduser = 34 and poradie = 2) ORDER by datum DESC |
||
oBc Profil * |
#3 · Zasláno: 11. 11. 2007, 22:38:45
fajn a neda sa to nejako cez to inner join?
A ako tam este zakonponujem to druhe? |
||
Alphard Profil |
#4 · Zasláno: 11. 11. 2007, 23:13:11 · Upravil/a: Alphard
tohle? píši to z hlavy, takže bych se divil, kdyby to šlo bez ladění :-)
SELECT u.username uzivatel, k.text komentar FROM komentare k left join uzivatelia u on u.id = k.iduser left join fotky f on u.id = f.iduser where f.iduser = 34 and f.poradie = 2 ORDER by datum DESC |
||
oBc Profil * |
#5 · Zasláno: 11. 11. 2007, 23:21:59
nejde to spravne aj ekd som to vyladil:
"SELECT u.username users, k.text users_fotky FROM users_fotky k right join users u on u.id = k.id left join users_fotky f on k.id = f.id ORDER by datum DESC"; neviem ci som tam dobre vsetko opravil ale hovorim taketo su nazvy users_fotky_kom (id, iduser, text) users_fotky (id, iduser, poradie, name) users bool (id, username) a este ti tam myslim chybala podmienka where? Prosim, pmoz mi som zufaly. |
||
Alphard Profil |
#6 · Zasláno: 11. 11. 2007, 23:24:12
já vím, ještě jsem to teď editoval, kdyžtak to zkus znovu, momentálně ale už nemám čas :-(
|
||
oBc Profil * |
#7 · Zasláno: 11. 11. 2007, 23:31:39
("SELECT
u.username users, k.text users_fotky_kom FROM users_fotky_kom k left join users u on u.id = k.iduser left join users_fotky f on u.id = f.iduser where f.iduser = 5 and f.poradie = 6 ORDER by datum DESC"); a stale to nejde..:((( a potom vo vypise to bude ako? $komentar = $komentare -> fetch_assoc(); $komentar['text'] ??? atd..?? prosiiim |
||
oBc Profil * |
#8 · Zasláno: 12. 11. 2007, 00:19:08
Mam to, po dlhych trapeniach
"SELECT u.username, k.* FROM users_fotky_kom k LEFT JOIN users u on k.iduser = u.id LEFT JOIN users_fotky f on u.id = f.iduser where k.iduser = ".$akt_user_id." and f.poradie = ".$get_foto_order." and k.idfotka = f.id ORDER by datum DESC"); Uz sa to asi neda zjednodusit vsak? a otazka k tomu tvojmu: "SELECT u.username tretie..." co znamena ten treti parameter? Dakujem. |
||
Alphard Profil |
#9 · Zasláno: 12. 11. 2007, 06:49:00
"SELECT u.username tretie..." co znamena ten treti parameter?
je to zkrácené u.username as tretie ... tedy alias (ten už vyhledávač najde) |
||
oBc Profil * |
#10 · Zasláno: 12. 11. 2007, 19:04:49
A aky je vlastne rozdiel medzi inner a left resp right? stale nechapem rozdiel
|
||
Alphard Profil |
#11 · Zasláno: 12. 11. 2007, 19:06:24
inner je vnitřní, left nebo right vnější
http://www.linuxsoft.cz/article.php?id_article=837 |
||
oBc Profil * |
#12 · Zasláno: 12. 11. 2007, 20:21:25
hento mam aj vytlacene ale ja tomu nechapem- ja to musim pochopit na vlastnom priklade
otazka preco v tomto nasom pripade je LEFT a nie INNER? |
||
Alphard Profil |
#13 · Zasláno: 12. 11. 2007, 20:28:33
otazka preco v tomto nasom pripade je LEFT a nie INNER?
:-) no, protože jsem ho tam původně napsal, myslím, že by tento dotaz fungoval i s inner join podstata je v tom, že inner join zahrne pouze související s obou sloupců left join vezme z prvního sloupce všechno a doplní související z druhého, když není, vloží tam NULL, ale ten řádek se tam na rozdíl od inner vyskytuje |
||
Časová prodleva: 16 let
|
0