Vypsání unikátních hodnot z tabulky – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vypsání unikátních hodnot z tabulky – MySQL – Fórum – Programujte.comVypsání unikátních hodnot z tabulky – MySQL – Fórum – Programujte.com

 

polonium0
Návštěvník
10. 12. 2009   #1
-
0
-

Zdravícko,

CREATE TABLE `categories` (

`cid` int(6) NOT NULL auto_increment,
`parent_id` int(11) NOT NULL default 0,
`cname` varchar(32) NOT NULL,
`sort_order` int(11) NOT NULL default 0,
PRIMARY KEY(`cid`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1250;

INSERT INTO `categories`(`cid`,`parent_id`,`cname`,`sort_order` VALUES(NULL,0,"Pánské",2);
INSERT INTO `categories`(`cid`,`parent_id`,`cname`,`sort_order`) VALUES(NULL,0,"Dámské",1);
INSERT INTO `categories`(`cid`,`parent_id`,`cname`,`sort_order`) VALUES(NULL,0,"Dětské",2);
INSERT INTO `categories`(`cid`,`parent_id`,`cname`,`sort_order`) VALUES(NULL,1,"Slipy",0);
INSERT INTO `categories`(`cid`,`parent_id`,`cname`,`sort_order`) VALUES(NULL,1,"Trenkoslipy",0);
Nedokážu přijít na to, jak vypsat unikátní hodnoty ze sloupečku parent_id přes sql příkaz. Vím, že to jde ale nemůžu to nikde najít.

Nahlásit jako SPAM
IP: 85.161.78.–
KIIV
~ Moderátor
+43
God of flame
10. 12. 2009   #2
-
0
-

bud distinct nebo pouzit group by

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
polonium0
Návštěvník
10. 12. 2009   #3
-
0
-

To KIIV : Díky určitě to použiju v budoucnu :) Ptže mezitím co jsem sem vložil předchozí příspěvek jsem si uvědomil, že to můžu dotaz na db poslat jinak.

Ale vznikl další problémek.
Princip je v tom, že hodnoty v tabulce, které mají parent_id=0 jsou kořenové kategorie a všechny ostatní kategorie, které patří do jakékoliv jiné kategorie v tabulce mají v parent_id právě cid kategorie, pod kterou patří. Skript mi správně zjistí že daná kategorie bude mít nějaké podkategorie ale pokud se vykoná if($db->rows($query2)>=1) nevloží do pole $categories další hodnoty.

  function get_categories(&$categories, $parent_id=0){

global $db;
$query = "SELECT `cid`, `cname` FROM `categories` WHERE `parent_id`=".$parent_id." ORDER BY `sort_order`, `cname` ASC";
echo $query."";
$mQ = $db->dotaz($query);
while($vQ = $db->vysledek()){
$categories[sizeof($categories)] = array("cname" => $vQ[1], "cPath" => $vQ[0]);
$query2 = "SELECT `cid` FROM `categories` WHERE `parent_id`=".$vQ["cid"];
if($db->rows($query2)>=1){
get_categories($categories, $vQ["cid"]);
}
}
}

Script pro vypsání výstupu:
$categories = array();

get_categories($categories);
echo "----------------------------------------";
foreach($categories as $k => $v){
echo "[".$v["cPath"]."] ".$v["cname"]." ".$k."";
}

Takže výstup je takovýto:
[2] Dámské

[1] Pánské
[4] Slipy
[5] Trenkoslipy

Kde v hranatých závorkách je cid kategorie

Nahlásit jako SPAM
IP: 85.161.78.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý