Autor | Zpráva | ||
---|---|---|---|
Gustav Profil * |
#1 · Zasláno: 25. 9. 2012, 21:41:18
Dobrý den,
abych to nejdříve trochu popsal. Mám 3 tabulky (pagerank,srank,alexarank), všechny mají tyto sloupce (id, d_id, score, created[timestamp]). Dále je tam tabulka domains, která není podstatná. SELECT DISTINCT d.domain, s.score srank, p.score pagerank, a.score alexarank FROM domains d INNER JOIN srank s ON s.d_id = d.id INNER JOIN pagerank p ON p.d_id = d.id INNER JOIN alexarank a ON a.d_id = d.id WHERE d.id = 143 Tímto dotazem získávám srank, pagerank a alexarank k určité doméně (kdy d.id = id domény). Získávám poslední záznam podle timestampu ve sloupci created a já bych potřeboval získat přechodzí záznam (které nemusí být den předtím, ani dva, ale třeba týden zpět) k tomu abych mohl porovnat změněné hodnoty. Například mám timestamp z 8.1.2012 kde jsou hodnoty (5,1,8) a já potřebuju získat záznam z 5.1.2012, ale neznám přesný datum toho záznamu, vím jen že je předposlední a zde budou hodnoty (4,1,8) tím pádem se jedna hodnota změnila o 1 nahoru. Snad někdo chápe čeho bych rád docílil. Předem děkuji za nápovědy. |
||
Tori Profil |
#2 · Zasláno: 25. 9. 2012, 21:45:30
|
||
Gustav Profil * |
#3 · Zasláno: 25. 9. 2012, 21:53:51 · Upravil/a: Gustav
Díky, snad to pomůže.
Příliš to nechápu, především tento řádek - and (a.sloupecek > b.sloupecek or (a.sloupecek = b.sloupecek and a.id > b.id)) tady porovnávám sloupecek a se sloupeckem b ale ja potřebuju porovnávat dvě hodnoty ve stejném sloupci a tabulce. |
||
peta Profil |
jmeno_db.jmeno_tbl.jmeno_sloupce
a.sloupecek = nazev sloupce je sloupecek z tabulky a b.sloupecek = nazev sloupce je sloupecek z tabulky b Tu samou logiku pouzivas v sql dotazu, co jsi napsal, kde to pouzivas pro pripojovani sql tabulky. INNER JOIN pagerank p ON p.d_id = d.id Mozna jsi jen prehledl radek, se seznamem tabulek. from tabulka a, tabulka b |
||
Tori Profil |
Gustav:
Asi ten odkaz nebyl úplně vhodný, jak teď koukám. Podstatná věc - když vkládáte nová data, tak přidáváte do všech tří tabulek naráz řádek se stejným timestampem, anebo může mít např. poslední záznamy pro danou doménu v každé tabulce jiný timestamp? Pokud je stejný, tak by mohlo fungovat toto: SELECT DISTINCT d.domain, s.score srank, p.score pagerank, a.score alexarank FROM domains d INNER JOIN (SELECT created FROM srank WHERE s.d_id = 143 ORDER BY created DESC LIMIT 1, 1) ref INNER JOIN srank s ON s.d_id = d.id AND s.created = ref.created INNER JOIN pagerank p ON p.d_id = d.id AND p.created = ref.created INNER JOIN alexarank a ON a.d_id = d.id AND a.created = ref.created WHERE d.id = 143 |
||
Kajman Profil |
#6 · Zasláno: 26. 9. 2012, 14:41:50
Gustav:
Jak získáváte poslední záznam podle timestampu ve sloupci created? Dotazem uvedeným v [#1] to asi nebude. Osobně bych při dotazu na poslední známou hodnotu ranku ke konkrétnímu id domény jen dat limit 2. |
||
Časová prodleva: 12 let
|
0