Autor | Zpráva | ||
---|---|---|---|
caradoc Profil * |
#1 · Zasláno: 30. 9. 2007, 00:41:41
Ahoj, mám problém se selektem SQL pro PHP
vytvořil jsem tabulku pro ukládání příspěvků, vybrat všechny příspěvky není problém, ale jak zařídit aby PHP zobrazovalo data tak jak k sobě patří tím myslím že když někdo reaguje na uživatele SLON, tak aby se to ukázalo pod příspěvkem SLONa, prostě jak to setřídit nejjednodušeji a jedním dotazem. Zkoušel jsem to příkazem v SQL IF, ale nějak jsem se nedobral dobrého konce, stačilo by ukázat jak napsat dokaz, kde se bude třídit podle jednoho sloupce a poddotaz kde se bude třídit podle druhého sloupce,.. děkuji, Caradoc |
||
domixx Profil |
#2 · Zasláno: 30. 9. 2007, 00:58:43 · Upravil/a: domixx
chtělo by to vidět strukturu databáze a co přesně chceš...
ale při výběru se používají podmínky: SELECT tabulka1.neco1, tabulka1.neco2, tabulka2.neco3 FROM tabulka1, tabulka2 WHERE tabulka1.neco1 = xyz, tabulka1.neco2 = abc |
||
caradoc Profil * |
#3 · Zasláno: 30. 9. 2007, 01:07:52
CREATE TABLE IF NOT EXISTS `dk_prispevky` (
`id` int(11) NOT NULL auto_increment, `kmen` varchar(11) NOT NULL, `vetev` varchar(11) NOT NULL, `jmeno` varchar(25) NOT NULL, `text` varchar(5000) NOT NULL, `datum` datetime NOT NULL, `query` varchar(15) NOT NULL, PRIMARY KEY (`id`) ) tady je struktura a jde mi o to, za každý příspěvek má své ID, a když je to reakce na příspěvek s ID třeba 30 tak aby to SQL načítalo nejdříve podle DATUMU a poté podle VETVE a radit to za sebe, jak to tak teď pročítám na webu tak to bude asi chtít dvě tabulky a spojit je třetí,. )o: |
||
domixx Profil |
#4 · Zasláno: 30. 9. 2007, 01:16:28
No, moc jsem to s tím řazením nepochopil, nějak si to nedokážu představit, ale řadit se dá pomocí SELECT * FROM table WHERE podmínka ORDER BY neco1 DESC, neco2 DESC, (DESC - sestupně, ASC - vzestupně)
|
||
caradoc Profil * |
#5 · Zasláno: 30. 9. 2007, 01:28:23
jak to napsat co nejjednodušeji
uživatel A zadá dotaz do diskuze,... uživatel B zadá jiný dotaz do diskuze, tyto dva dotazy se setřídí a ve výpisu z Mysql ukážou za sebou, tříděné podle data ale pak vloží uživatel C reakci na dotaz uživatele A a to potřebuji setřídit tak aby se to ukázalo ihned po výpisu dotazu uživatele A, takto se to pak vypíše v PHP a diskuze bude přehlednější,.. nikdy jsem to nedělal, hledám cestu jak na to,.. v knížkách to nikde takto popsané není, |
||
domixx Profil |
#6 · Zasláno: 30. 9. 2007, 01:46:40 · Upravil/a: domixx
No, pochopil jsem, jsou to takový ty diskuze pod článkem...
Taky jsem to nikdy nedělal, ale napadá mě toto řešení (pokud to nebude strom, kterej bude postupně růst...): Základní tabulka bude normálně s příspěvky bez reakcí. Když někdo zareaguje na určitej příspěvek, uloží se do jiné tabulky ID příspěvku na kterej někdo reagoval + text reakce. Pokud někdo zareaguje na tu reakci, tak bych to pak už řadil jenom podle data (pokud se to nebude dál větvit, to by bylo horší a to bych se asi musel víc zamyslet ;-) ) Takže schematicky: PRISPEVEK_id1 PRISPEVEK_id2 PRISPEVEK_id3 id3_reakce1 id3_reakce2 id3_reakce3 PRISPEVEK_id4 id4_reakce1 PRISPEVEK_id5 id5_reakce1 id5_reakce2 id5_reakce3 |
||
caradoc Profil * |
#7 · Zasláno: 30. 9. 2007, 02:04:27
zkusím to tak udělat, relace asi bude nejlepší,
dík za typ, |
||
domixx Profil |
#8 · Zasláno: 30. 9. 2007, 02:12:34
NZ, jen to bude funkční pro reakci jedné úrovně, pro další úroveň by to muselo být jinak, a na to už je moc hodin ;-)
|
||
caradoc Profil * |
#9 · Zasláno: 30. 9. 2007, 02:23:18
kdbys někdy měl chvilku dlooouhou, zkus napsat SELECT pro výběr více úrovní,.. třeba 8 nebo 10, více nebude potřeba
děkuji ti |
||
Časová prodleva: 4 měsíce
|
|||
sEBa Profil * |
#10 · Zasláno: 4. 2. 2008, 19:34:17
Nevim, jestli neodepisuji pozdě, ale co udelat v tabulce - treba "prispevky" sloupec "reakce", kdyz nekdo da nove tema tak se tam ulozi 0 a kdyz bude nekdo reagovat, tak se tam vlozi id clanku a treba nejaky prefix, to je jedno ... Pak si to v PHP skriptu u vypisu jednoduse vypises :) Neni na tom nic sloziteho, napr Pecan.cz ti nabizi zdarma paradni gbook, kde si to muzes vyzkouset, stazi zdarma - a uz dost te neplacene reklamy ;)
|
||
Časová prodleva: 16 let
|
0