Autor Zpráva
Cup
Profil
Dobrý dne. Nevím si rady s výběrem dat z jedné tabulky. Chci vybrat pouze ty záznamy. na které odpověděl uživatel s id např. 1

sesmolil jsem pár dotazů, ale žádný nefungoval tak jak jsem chtěl.

Myslím že by to šlo nějak takto, ale nevrací mi to žádné záznamy

        SELECT *
         FROM vzkaz v, user u
         WHERE v.idUser = u.idUser
          AND v.idUser = '".$_SESSION["idUser"]."'
          AND v.idTrida = '".$_SESSION["idTrida"]."'
          AND v.verejnyVzkaz = '0' 
          AND odpovedVzkaz IN ( 
              SELECT idVzkaz
              FROM vzkaz v
              WHERE v.idUser = '".$_SESSION["idUser"]."' 
               )
        ORDER BY v.idVzkaz DESC


struktura:


CREATE TABLE IF NOT EXISTS `vzkaz` (
  `idVzkaz` int(11) NOT NULL AUTO_INCREMENT,
  `idTrida` int(11) NOT NULL,
  `idSkola` int(11) DEFAULT NULL,
  `idUser` int(11) NOT NULL,
  `textVzkaz` text COLLATE utf8_czech_ci NOT NULL,
  `casVzkaz` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `verejnyVzkaz` int(1) NOT NULL DEFAULT '0',
  `odpovedVzkaz` int(16) NOT NULL DEFAULT '0',
  PRIMARY KEY (`idVzkaz`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci ROW_FORMAT=DYNAMIC AUTO_INCREMENT=43 ;

--
-- Vypisuji data pro tabulku `vzkaz`
--

INSERT INTO `vzkaz` (`idVzkaz`, `idTrida`, `idSkola`, `idUser`, `textVzkaz`, `casVzkaz`, `verejnyVzkaz`, `odpovedVzkaz`) VALUES
(42, 8, 1, 1, 'efsd', '2010-02-10 10:57:09', 0, 0),
(41, 8, 1, 1, 'DD', '2010-02-10 10:50:12', 0, 33),
(40, 8, 1, 1, 'DD', '2010-02-10 10:50:08', 0, 34),
(39, 8, 1, 16, 'DDD', '2010-02-10 10:49:54', 0, 32),
(38, 8, 1, 16, 'DDD', '2010-02-10 10:49:46', 0, 29),
(37, 8, 1, 16, 'DDDD', '2010-02-10 10:49:39', 0, 33),
(36, 8, 1, 16, 'DDDD', '2010-02-10 10:49:31', 0, 31),
(35, 8, 1, 16, 'DDD', '2010-02-10 10:49:26', 0, 0),
(34, 8, 1, 6, 'DD', '2010-02-10 10:48:43', 0, 0),
(33, 8, 1, 6, 'FF', '2010-02-10 10:48:35', 0, 31),
(32, 8, 1, 6, 'DD', '2010-02-10 10:48:28', 0, 0),
(31, 8, 1, 2, 'EDD s d g', '2010-02-10 10:42:38', 0, 29),
(30, 8, 1, 2, 'dsgsd', '2010-02-10 10:42:27', 0, 0),
(29, 8, 1, 1, 'Takže user 1', '2010-02-10 10:38:07', 0, 0);


Díky všem :)


Moderátor Joker: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
SwimX
Profil
Cup:
Chci vybrat pouze ty záznamy. na které odpověděl uživatel s id např. 1
buď nechápu, nebo je to jen toto: :)
SELECT * FROM vzkaz WHERE idUser = 1
ninja
Profil
Chci vybrat pouze ty záznamy. na které odpověděl uživatel s id např. 1

SELECT * FROM vzkaz v JOIN user u ON v.idUser = u.idUser WHERE u.idUser="1";
SwimX
Profil
Cup:
možná ještě takle:
SELECT * FROM vzkaz v JOIN user u ON v.idUser = u.idUser WHERE u.idUser="1" and odpovedVzkaz <> 0;
protože předpokládám že záznam, který je hlavní (není odpovědí) má toto na 0, a pokud chceš vybrat jenom odpovědi.
Cup
Profil
Joker:
Sory zapoměl jsem.


ninja:
Tak jednoduše? ...

no zkusil jsem to, a to co bych chtěl nefunguje.

Mám tu diskusi asi 5 úrovňovou. a mě jde jen o to aby to vybralo id toho příspěvku na který já odpovídám. toto vybírá čistě jen moje příspěvky. já bych chtěl id příspěvků na které já odpovídám, -> jednu úroveň nad ním (id toho na který odpovídám)

CHápete co myslím, kdyžtak dovysvětlím
Cup
Profil
SwimX:
Ano to chápete správně. ale vybírá to pouze moje příspěvky. já potřebuju ten o úrověň víše, takže idvzkaz = odpovedVzkaz (ale pokaždé se jedná o jiný řádek v tabulce)... ale nevím jak to tam zapsat
Kajman_
Profil *
select v1.* from vzkaz v1 join vzkaz v2 on v1.idVzkaz=v2.odpovedVzkaz where v2.id_user=1
Cup
Profil
Kajman:
Jo. to bude ono :) díky

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: