Avatar billede cybermaster Nybegynder
07. november 2003 - 06:34 Der er 20 kommentarer og
1 løsning

brug af UNION

Jeg prøvedet på denne måde:
$resultat = mysql_query("select idkat, okat, count(okat) as okatantal, mkat, ukat from wsbcm_kat where mkat = '' OR okat = '$ok' AND ukat //= '' OR okat = '$ok' AND mkat = '$mk' ORDER BY okat, mkat, ukat");

men fandt ud af at det kunne man ikke, så fandt jeg funktionen UNION men kan ikke hitte ud af det.
håber i kan se logikken ;-)

$resultat = mysql_query("select idkat) UNION (select okat, count(*) as okatantal) UNION (select mkat, count(*) as mkatantal) UNION (select ukat, count(*) as ukatantal) UNION from wsbcm_kat where mkat = '' OR okat = '$ok' AND ukat = '' OR okat = '$ok' AND mkat = '$mk' ORDER BY okat, mkat, ukat");
Avatar billede arne_v Ekspert
07. november 2003 - 06:47 #1
Der skal være komplette SELECET statements mellem hver UNION.

Altså:

(SELECT ... FROM ... WHERE ...)
UNION
(SELECT ... FROM ... WHERE ...)
UNION
(SELECT ... FROM ... WHERE ...)
Avatar billede cybermaster Nybegynder
07. november 2003 - 06:55 #2
$resultat = mysql_query(select idkat from wsbcm_kat where mkat = '' OR okat = '$ok' AND ukat = '' OR okat = '$ok' AND mkat = '$mk' ORDER BY okat, mkat, ukat)
UNION
(select okat, count(*) as okatantal from wsbcm_kat where mkat = '' OR okat = '$ok' AND ukat = '' OR okat = '$ok' AND mkat = '$mk' ORDER BY okat, mkat, ukat)
UNION
(select mkat, count(*) as mkatantal from wsbcm_kat where mkat = '' OR okat = '$ok' AND ukat = '' OR okat = '$ok' AND mkat = '$mk' ORDER BY okat, mkat, ukat)
UNION
(select ukat, count(*) as ukatantal from wsbcm_kat where mkat = '' OR okat = '$ok' AND ukat = '' OR okat = '$ok' AND mkat = '$mk' ORDER BY okat, mkat, ukat);

Den laver stadivæk fejl:
Parse error: parse error, unexpected T_STRING in ...
Avatar billede arne_v Ekspert
07. november 2003 - 06:57 #3
Lyder som om den er gal med "" erne i PHP syntaxen.
Avatar billede cybermaster Nybegynder
07. november 2003 - 06:59 #4
hvis jeg sætter start og stop som i første ex.

giver den fejl:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in...
Avatar billede arne_v Ekspert
07. november 2003 - 07:11 #5
Hvad version af MySQL bruger du ?
Avatar billede cybermaster Nybegynder
07. november 2003 - 07:23 #6
Velkommen til phpMyAdmin 2.3.2
MySQL 3.23.58-log kører på...

Jeg vender tilbage ca. kl. 12:00
Avatar billede arne_v Ekspert
07. november 2003 - 07:30 #7
Ups.

Jeg mener at UNION er ny i MySQL 4.0 !
Avatar billede arne_v Ekspert
07. november 2003 - 07:31 #8
Avatar billede arne_v Ekspert
07. november 2003 - 07:31 #9
Så det kommer ikke til at virke. Beklager.
Avatar billede cybermaster Nybegynder
07. november 2003 - 14:18 #10
Hvordan klare man det så?
Avatar billede cybermaster Nybegynder
07. november 2003 - 15:20 #11
sætter spm'et i bero da jeg arbejder på en mulighed. poster den hvis det lykkes
Avatar billede arne_v Ekspert
07. november 2003 - 15:26 #12
Man kan normalt lade applikationen ligge data under hianden.
Avatar billede cybermaster Nybegynder
07. november 2003 - 15:35 #13
Er ikke helt med på hvad du mener?
Avatar billede arne_v Ekspert
07. november 2003 - 15:51 #14
I.s.f at lade applikationen sende 1 query og som viser data fra X SELECT
UNION'ed oven på hinaden, så lader du bare applikationen lave X queries
hver af en enkelt SELECT og viser data på samme måde.
Avatar billede cybermaster Nybegynder
07. november 2003 - 16:01 #15
arne det er sikkert rigtig hvad du skriver, men jeg fatter minus af det, beklager, kan du skærer det ud i pap eller støbe det til mig ;-)
Avatar billede arne_v Ekspert
07. november 2003 - 16:19 #16
Det er sikkert mig der er dårlig til at forklare.

Alternativ A:

(SELECT f FROM t1) UNION (SELECT f FROM t2)
vis 20 records

Alternativ B:

SELECT f FROM t1
vis 10 records
SELECT f FROM t2
vis 10 records

hvis output formateres smart, så kan brugeren ikke se forskel på A og B.
Avatar billede cybermaster Nybegynder
07. november 2003 - 20:04 #17
Jeg har løst det med arrays istedet, langt og snørklet, ;-)
hev det ud af hverenkelt søgning, for derefter at sammel ligne.

Hvor menge point vi du have?
Avatar billede cybermaster Nybegynder
07. november 2003 - 20:04 #18
og tak for hjælpen
Avatar billede arne_v Ekspert
07. november 2003 - 20:07 #19
Det er dit privilegium at vurdere om min indsats er point værd og
i givet fald hvormange.
Avatar billede cybermaster Nybegynder
07. november 2003 - 20:15 #20
hmmm trodet faktisk jeg havde sat den højere...

Så ;-)

Tak for hjælpen endnu engang
Avatar billede arne_v Ekspert
07. november 2003 - 20:17 #21
Jeg takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester