úterý 26. srpna 2008

Diaries

...tak už se mi konečně povedlo je sfunkčnit?
Myslím zobrazování posledního přidaného vůbec, nebo posledního v deníku konkrétního uživatele...
Ta query byla zabiják...
Schválně, query která vybere nejnovější záznam a bere v úvahu i to, jestli máte dostatečné privilegia na čtení záznamu (jste registrovaní, nebo vás má jeho majitel v přátelích, podle toho jak je ten záznam nastaven) vypadá takto pro vybrání záznamu na titulku:

$hugeQuery =
"SELECT *
FROM (
SELECT swDiaries.Owner, swDiaries.DateAdded, swDiaries.VisibleTo, swDiaries.Title, swDiaries.Text1, Ft.FriendOwner, Ft.Friend
FROM swDiaries
LEFT JOIN (SELECT swFriends.Owner AS FriendOwner, swFriends.Friend
FROM swFriends
WHERE (swFriends.Friend = '" . $Login->Get() . "')) AS Ft
ON swDiaries.Owner = Ft.FriendOwner ORDER BY swDiaries.DateAdded DESC) as ResT
WHERE (ResT.VisibleTo <= " . $Login->GetPrivileges() . ") OR ((ResT.VisibleTo = 3) AND (ResT.Owner = '" . $Login->Get() . "')) OR ((ResT.VisibleTo = 2) AND (ResT.Friend = '" . $Login->Get() . "'))
LIMIT 1;";

A query pro výběr nejnovějšího záznamu z deníku konkrétního uživatele (pro zobrazení v jeho profilu), která taky bere v úvahu všechna privilegia a tak, vypadá zase takhle:

$hugeQuery =
"SELECT *
FROM (
SELECT swDiaries.Owner, swDiaries.DateAdded, swDiaries.VisibleTo, swDiaries.Title, swDiaries.Text1, Ft.FriendOwner, Ft.Friend
FROM swDiaries
LEFT JOIN (SELECT swFriends.Owner AS FriendOwner, swFriends.Friend
FROM swFriends
WHERE swFriends.Friend = '" . $Login->Get() . "') AS Ft
ON swDiaries.Owner = Ft.FriendOwner ORDER BY swDiaries.DateAdded DESC) as ResT
WHERE (ResT.Owner = '" . $Owner . "') AND ((ResT.VisibleTo <= " . ($Login->GetPrivileges()) . ") OR ((ResT.VisibleTo = 3) AND (ResT.Owner = '" . $Login->Get() . "')) OR ((ResT.VisibleTo = 2) AND (ResT.Friend = '" . $Login->Get() . "')))
LIMIT 1;";

Žádné komentáře: