MySQL(i) - UNION ALL, Num_rows

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior DevOps-ontwikkelaar eIDAS

Functie­omschrijving Burgers en bedrijven veilig en betrouwbaar digitaal toegang geven tot diensten en producten van het ministerie van Economische Zaken en Klimaat. Als senior DevOps-ontwikkelaar bouw je daar letterlijk aan mee. En dat doe je bij DICTU: een van de grootste en meest vooruitstrevende ICT-dienstverleners van de Rijksoverheid. Jij werkt mee aan de doorontwikkeling van eIDAS, dat staat voor Electronic IDentification Authentication and trust Services. Deze koppeling maakt de grensoverschrijdende authenticatie op overheidswebsites binnen de Europese Unie mogelijk. Het ministerie van Economische Zaken en Klimaat heeft één moderne toegangspoort voor zijn diensten en inspecties. Enkele daarvan zijn dankzij eIDAS inmiddels

Bekijk vacature »

Dennis Mertens

Dennis Mertens

11/02/2009 16:06:00
Quote Anchor link
Hallo mensen,

Hier mijn 'query':
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
    $qSearch
= $objSql->query("
            (SELECT
                name, 'movie' AS section
            FROM
                movie
            WHERE
                name LIKE '%"
.$objSql->real_escape_string($_POST['term'])."%')
    UNION ALL
            (SELECT
                name, 'genre' AS section
            FROM
                genre
            WHERE
                name LIKE '%"
.$objSql->real_escape_string($_POST['term'])."%')
    UNION ALL
            (SELECT
                name, 'reek' AS section
            FROM
                reek
            WHERE
                name LIKE '%"
.$objSql->real_escape_string($_POST['term'])."%')
        ORDER BY
        CASE WHEN
            '"
.$_POST['rank']."' = 'alphabetical'
        THEN
            name
        ELSE
            section
        END
    "
);
[
/code]

Nu krijg ik als de rank post section is genre, movie en reek onder elkaar.
Bijv:
[
quote]Genre
Action
Urban

Movie
basblabl
OZ season 4
OZ season 1
OZ season 5
OZ season 2
OZ season 6
OZ season 3

Reek
Alle Oz dingen!!![/quote]

Maar nu wil ik achter Genre, Movie en Reek tussen haakjes het aantal gevonden genres, movies of reeks.

Dit dus:
[
quote]Genre (2)
Action
Urban

Movie (7)
basblabl
OZ season 4
OZ season 1
OZ season 5
OZ season 2
OZ season 6
OZ season 3

Reek (1)
Alle Oz dingen!!![/quote]

Normaal gesproken wordt het aantal records met num_rows gedaan, maar dan krijg ik het totaal aantal gevonden records.

Iemand een idee?

M.v.g.
Dennis Mertens
 
PHP hulp

PHP hulp

30/10/2020 09:35:40
 
Dennis Mertens

Dennis Mertens

12/02/2009 16:16:00
Quote Anchor link
Bump.

Ik ben even verder gegaan en ben nu bezig met multi_query, more_results en next_result.

Mijn query ziet er nu zo uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$objSql
->multi_query("
    SELECT
        name, 'genre' AS section
    FROM
        genre
    WHERE
        name LIKE '%"
.$objSql->real_escape_string($_POST['term'])."%'
    ;
    SELECT
        name, 'movie' AS section
    FROM
        movie
    WHERE
        name LIKE '%"
.$objSql->real_escape_string($_POST['term'])."%'
    ;
    SELECT
        name, 'reek' AS section
    FROM
        reek
    WHERE
        name LIKE '%"
.$objSql->real_escape_string($_POST['term'])."%'
"
);
[
/code]Helaas kan ik nu nog werken met ORDER BY name, zodat de resultaten van de verschillende queries door elkaar staan (alfabetisch).
 
Jurgen assaasas

Jurgen assaasas

12/02/2009 16:20:00
Quote Anchor link
COUNT()?
 
Dennis Mertens

Dennis Mertens

12/02/2009 16:26:00
Quote Anchor link
En dan?

Even onderbouwen. Want met COUNT bereik ik niks.
 
Jurgen assaasas

Jurgen assaasas

12/02/2009 16:27:00
Quote Anchor link
COUNT() is een SQL functie die het aantal records telt. let wel op dat je dan het GROUP BY statement moet gebruiken in dit geval.
 
Dennis Mertens

Dennis Mertens

12/02/2009 16:31:00
Quote Anchor link
Ja en nu even graag aandacht bieden. Want met COUNT krijg ik niet het gewenste resultaat. Krijg ik ben elk record een 1. Omdat elke naam maar 1 keer voorkomt.

Edit
Query
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
    $qSearch
= $objSql->query("
            (SELECT
                name, 'movie' AS section, COUNT(*) AS total
            FROM
                movie
            WHERE
                name LIKE '%"
.$objSql->real_escape_string($_POST['term'])."%'
            GROUP BY
                name)
    UNION ALL
            (SELECT
                name, 'genre' AS section, COUNT(*) AS total
            FROM
                genre
            WHERE
                name LIKE '%"
.$objSql->real_escape_string($_POST['term'])."%'
            GROUP BY
                name)
    UNION ALL
            (SELECT
                name, 'reek' AS section, COUNT(*) AS total
            FROM
                reek
            WHERE
                name LIKE '%"
.$objSql->real_escape_string($_POST['term'])."%'
            GROUP BY
                name)
        ORDER BY
        CASE WHEN
            '"
.$objSql->real_escape_string($_POST['rank'])."'='alphabetical'
        THEN
            name
        ELSE
            section
        END
    "
);
[
/code]
[
b]Resultaat[/b]
[
code]Genre (1)
Humor
Action

Movie (1)
OZ season 4
OZ season 1
OZ season 5
OZ season 2
OZ season 6
OZ season 3

Reek (1)
Alle Oz dingen!!!
OZ!!!!![/code]
Gewijzigd op 01/01/1970 01:00:00 door Dennis Mertens
 
Jurgen assaasas

Jurgen assaasas

12/02/2009 16:36:00
Quote Anchor link
Alleen met count kun je records tellen dus de oplossing heb je al, nu zul je hier mee moeten gaan spelen.
 
Dennis Mertens

Dennis Mertens

12/02/2009 16:38:00
Quote Anchor link
Sorry, maar ik kan zover ik weet niet het des gewenste resultaat terug krijgen.
 
Jurgen assaasas

Jurgen assaasas

12/02/2009 16:42:00
Quote Anchor link
Mogelijk zul je 2 queries moeten gebruiken, ik kan zo ook niet ruiken natuurlijk wat je nu exact wil ophalen. Het is niet verkeerd om meerdere queries te gebruiken. Vaak is het zelfs sneller om een paar simpele queries te maken ipv een hele lange.
 
Dennis Mertens

Dennis Mertens

12/02/2009 16:44:00
Quote Anchor link
Ik heb een voorbeeld gegeven van wat ik wil ophalen, heeft niks met ruiken te maken. Dan lees je ook niet goed.

Maar ik wil het zo compact mogelijk houden.

Maar iig bedankt voor je 'moeite'.
 
Dennis Mertens

Dennis Mertens

24/02/2009 14:16:00
Quote Anchor link
BUMP? :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.