abonnement Unibet Coolblue Bitvavo
  FOK!-Schrikkelbaas dinsdag 18 augustus 2009 @ 16:16:57 #26
1972 Swetsenegger
Egocentrische Narcist
pi_71982816
quote:
Op dinsdag 18 augustus 2009 16:10 schreef Core2 het volgende:

[..]

Denk er wel aan dat je die query in z'n geheel moet uitvoeren, dus ook die select * from history eronder.
Mjah ik weet eigenlijk niet hoe SQL manager daar mee om gaat.
Hoe gooi je dit in een script eigenlijk? 2 query's uitvoeren?

in php zou dat dus zoiets worden

1
2
3
4
5
6
7
8
9
10
11
12
13
$query="WITH toestand
        AS
        (
         SELECT id as child, * FROM quotations where parent=10
         UNION ALL
         SELECT * FROM toestand where parent=child
        )";
if($r=mssql_query($query)){
   $query2="SELECT * FROM toestand";
   if($result=mssql_query($query2)){
     // doe iets
   }
}
pi_71982940
quote:
Op dinsdag 18 augustus 2009 16:09 schreef Core2 het volgende:

[..]

Tja dat is jammer, procedureel denken terwijl het ook prima met een query kan.
Jip, het is dan ook al een tijdje geleden dat ik die gemaakt had en ik vond deze methode toen stukken eenvoudiger dan met unions klooien. :D

Ik heb hem in ieder geval gevonden (had hem hier nog in een SQL2005 instance staan).

Het ging bij mij op een tabel [RUB] (Rubrieken). In de tabel RUB had ik de velden rub_id (Primary Key) en rub_parent. Op een gegeven moment moest ik queries kunnen draaien die aan de hand van een rubriek (rub_id), de rub_id waardes van alle 'onderliggende' Rubrieken ging ophalen, zodat ik deze weer in een volgende query kon gebruiken. Ik heb hiervoor de volgende functie gemaakt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
ALTER FUNCTION [dbo].[GetIDs] 
(
   @RUB_ID      BIGINT
)
RETURNS VARCHAR(255)
AS
BEGIN

   DECLARE @OUTPUT VARCHAR(255)
   SET @OUTPUT = ',' + CONVERT(VARCHAR, @RUB_ID)

   DECLARE @LOOP_RUB INT
   SET @LOOP_RUB = (SELECT MIN(RUB_ID) FROM RUB WHERE RUB_PARENT = @RUB_ID)

   WHILE @LOOP_RUB IS NOT NULL
   BEGIN

      SET @OUTPUT = @OUTPUT + (SELECT dbo.GetIDs(RUB_ID) FROM RUB WHERE RUB_ID = @LOOP_RUB)
      SET @LOOP_RUB = (SELECT MIN(RUB_ID) FROM RUB WHERE RUB_PARENT = @RUB_ID AND RUB_ID > @LOOP_RUB )

   END

   RETURN @OUTPUT

END


Gebruik:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT
   rub_id,
   rub_name,
   SUBSTRING(rub_childs, 2, LEN(rub_childs)) as rub_child_ids
FROM
   (
      SELECT
         rub_id,
         rub_name,
         dbo.GetIDs(rub_id) AS rub_childs
      FROM
         RUB
   ) AS PreSelection
ORDER BY
   rub_name


Inderdaad geen hele nette oplossing. Maar nogmaals, is alweer een tijd geleden (stamt nog uit mijn SQL2005 instance, go figure :') ), het was toen voor een eenmalige handeling (dus geen querie die elke keer uitgevoerd ging worden) en was relatief eenvoudig te doen. Union queries word ik (nog steeds) niet vrolijk van.
  dinsdag 18 augustus 2009 @ 16:44:38 #28
192481 Core2
Happiness is the road
pi_71983632
quote:
Op dinsdag 18 augustus 2009 16:16 schreef Swetsenegger het volgende:

[..]

Mjah ik weet eigenlijk niet hoe SQL manager daar mee om gaat.
Hoe gooi je dit in een script eigenlijk? 2 query's uitvoeren?

1
2
3
4
5
6
7
8
9
10
11
$query="WITH toestand
        AS
        (
         SELECT id as child, * FROM quotations where parent=10
         UNION ALL
         SELECT * FROM toestand where parent=child
        )
select * from toestand";
if($r=mssql_query($query)){
 
}
  FOK!-Schrikkelbaas dinsdag 18 augustus 2009 @ 16:57:38 #29
1972 Swetsenegger
Egocentrische Narcist
pi_71983996
Ook in script krijg ik dezelfde syntax error.
  dinsdag 18 augustus 2009 @ 17:14:13 #30
192481 Core2
Happiness is the road
pi_71984416
quote:
Op dinsdag 18 augustus 2009 16:57 schreef Swetsenegger het volgende:
Ook in script krijg ik dezelfde syntax error.
Voer dit script eens uit, het liefst in management studio express 2005/2008:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
drop table test
go

create table test(
   id   int primary key,
   name varchar(255),
   parent int
)

go

insert into test
   select 1,'test', NULL
   UNION
   select 2, 'foo', 1
   union
   select 3, 'bar', 2

go

with toestand
as
(
   select * from test where parent is null
   union all
   select test.* from test
   inner join toestand
   on test.parent = toestand.id
)
select * from toestand
  FOK!-Schrikkelbaas dinsdag 18 augustus 2009 @ 19:47:49 #31
1972 Swetsenegger
Egocentrische Narcist
pi_71988346
morgen even proberen
  FOK!-Schrikkelbaas woensdag 19 augustus 2009 @ 10:17:08 #32
1972 Swetsenegger
Egocentrische Narcist
pi_72003103
Incorrect syntax near the keyword with.
  woensdag 19 augustus 2009 @ 11:52:06 #33
192481 Core2
Happiness is the road
pi_72005700
Ik kan me dan niet voorstellen dat je sqlserver 2005 hebt.
  FOK!-Schrikkelbaas woensdag 19 augustus 2009 @ 12:07:33 #34
1972 Swetsenegger
Egocentrische Narcist
  woensdag 19 augustus 2009 @ 12:21:20 #35
56176 Catch22-
Ben je Blind?!
pi_72006506
quote:
Op zondag 16 augustus 2009 12:20 schreef Tuvai.net het volgende:
OP uitgebreid met wat linkjes.

Welke library gebruikt trouwens iedereen om PDFs te genereren? Ik gebruik zelf al heel lang die van db.AutoTrack, maar die is érg slordig en héél langzaam, vooral wanneer je meerdere pagina's gaat genereren. Tijd voor een goed alternatief in ieder geval.
iTextSharp gebruik ik

Ik heb ervaring met WCSF (met asp.net/C#/NHibernate) en Castle Project (heeft NVelocity en NHibernate met active records), beide, uiteraard, domaindriven

nooit meer SQL/MySQL direct uitvoeren is wel heel lekker. Als je je ORM goed toepast ben je daarvan af.
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
  woensdag 19 augustus 2009 @ 12:48:01 #36
192481 Core2
Happiness is the road
pi_72007158
quote:
Op woensdag 19 augustus 2009 12:21 schreef Catch22- het volgende:

[..]

iTextSharp gebruik ik

Ik heb ervaring met WCSF (met asp.net/C#/NHibernate) en Castle Project (heeft NVelocity en NHibernate met active records), beide, uiteraard, domaindriven

nooit meer SQL/MySQL direct uitvoeren is wel heel lekker. Als je je ORM goed toepast ben je daarvan af.
Ik vind NHibernate wel een gigantisch monster. Ik zie dan liever Linq2SQL of het entity framework.
  woensdag 19 augustus 2009 @ 13:42:14 #37
56176 Catch22-
Ben je Blind?!
pi_72008753
mwoah, kwestie van smaak denk ik.

Fluent Hibernate al eens bekeken?
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
pi_72009363
quote:
Op woensdag 19 augustus 2009 10:17 schreef Swetsenegger het volgende:
Incorrect syntax near the keyword with.
Geef de volledige foutmelding eens?
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')