Autor Zpráva
oBc
Profil *
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
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 *
fajn a neda sa to nejako cez to inner join?
A ako tam este zakonponujem to druhe?
Alphard
Profil
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 *
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
já vím, ještě jsem to teď editoval, kdyžtak to zkus znovu, momentálně ale už nemám čas :-(
oBc
Profil *
("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 *
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
"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 *
A aky je vlastne rozdiel medzi inner a left resp right? stale nechapem rozdiel
Alphard
Profil
inner je vnitřní, left nebo right vnější
http://www.linuxsoft.cz/article.php?id_article=837
oBc
Profil *
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
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0