webForumDet fria alternativet

Count med getrows?

15 svar · 305 visningar · startad av Jesper T

Jesper TMedlem sedan nov. 20017 058 inlägg
#1

Jag försöker att få ut hur många underkategorier (hur många parent_page_id som = page_id)
Denna visar ingenting:

("SELECT page_id,parent_page_id,linktext,count(*) FROM tbl_links WHERE page_id=parent_page_id GROUP BY page_id ORDER BY orderid ")

Denna genererar fel:

("SELECT page_id,parent_page_id,linktext,(SELECT count(*) FROM tbl_links WHERE page_id=parent_page_id GROUP BY page_id) FROM tbl_links ORDER BY orderid ")
LarsGMedlem sedan dec. 200012 465 inlägg
#2
SELECT p.page_id,p.linktext,count(*) 
FROM tbl_links p inner join tbl_links c
on p.page_id = c.parent_page_id 
GROUP BY p.page_id,p.linktext

Om du har group by så kan du inte göra order by på något som inte finns med i select-listan. (Eller hur ;))

Flyttas från Mysql till SQL

Jesper TMedlem sedan nov. 20017 058 inlägg
#3

Det står bara 0 (noll) nu på varenda post.

LarsGMedlem sedan dec. 200012 465 inlägg
#4

Oj då. Då måste jag testa lite också. Jag återkommer.

Jesper TMedlem sedan nov. 20017 058 inlägg
#5

Va? LarsG! Testar du? Jag trodde du hade allt på dina fem... ;)

LarsGMedlem sedan dec. 200012 465 inlägg
#6

Testresultat

create table links( page_id int,parent int, text char);
insert into links values(1,null,'a');
insert into links values(2,null,'b');
insert into links values(3,1,'c');
insert into links values(4,1,'d');
insert into links values(5,2,'e');

select l1.page_id , l1.text , count(*)from links l1 , links l2
where l1.page_id = l2.parent 
group by l1.page_id,l1.text;
    PAGE_ID TEXT
=========== ==== ===========
          1 a              2
          2 b              1

                  2 rows found

Jag har kanske missförstått hur din tabell är definerad.

Fel i Mysql?

Jesper TMedlem sedan nov. 20017 058 inlägg
#7
CREATE TABLE tbl_links (
  page_id int(10) unsigned NOT NULL auto_increment,
  parent_page_id int(11) default NULL,
  linktext varchar(250) default NULL,
  orderid int(11) default NULL,
  PRIMARY KEY  (page_id)
) TYPE=MyISAM;

INSERT INTO tbl_links VALUES("2", "1", "Testlänk 1", "1");
INSERT INTO tbl_links VALUES("4", "1", "Testlänk 2", "2");
INSERT INTO tbl_links VALUES("6", "1", "Testlänk 3", "3");
Jesper TMedlem sedan nov. 20017 058 inlägg
#8

Alltså alla poster skall hämtas, och count() skall plocka ut hur många av posterna som innehåller varje specifikt id.
Ex.
page_id parent_page_id linktext orderid
====== =========== ===== =====
1 0 Ettan 1
2 1 Två 2
3 1 Tre 3
4 2 Fyra 4

Alltså:
getrows(0,0) skulle visa 2
(0,1) skulle visa 1
(0,2) och (0,3) skulle visa 0

en aning svårförklarat... :)

LarsGMedlem sedan dec. 200012 465 inlägg
#9

Vilket resultat förväntar du dig?

Jesper TMedlem sedan nov. 20017 058 inlägg
#10

1 0 Ettan 1 :2
2 1 Två 2 :1
3 1 Tre 3 :0
4 2 Fyra 4 :0

id 1 finns i två poster alltså så :2
osv...

LarsGMedlem sedan dec. 200012 465 inlägg
#11

Det där får jag inte ihop med de testdata som du gjorde insert på.

Jesper TMedlem sedan nov. 20017 058 inlägg
#12

Nej, men det var ingen testdata det var endast tre poster vilka som helst som jag visade.
Här är samma värden som i exemplet ovan:

INSERT INTO tbl_links VALUES("1", "0", "Ettan", "1");
INSERT INTO tbl_links VALUES("2", "1", "Två", "2");
INSERT INTO tbl_links VALUES("3", "1", "Tre", "3");
INSERT INTO tbl_links VALUES("4", "2", "Fyra", "4");
Jesper TMedlem sedan nov. 20017 058 inlägg
#13

Idéer?

Jesper TMedlem sedan nov. 20017 058 inlägg
#14

Inte ett tips?

Jesper TMedlem sedan nov. 20017 058 inlägg
#15

Det kanske inte funkar över huvud taget?

Jesper TMedlem sedan nov. 20017 058 inlägg
#16

Ok, det tolkar jag som att det är omöjligt.
Tack ändå. :)

126 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
124 ms — hämta tråd, inlägg och bilagor (db)