inhoud 2 tabellen in 1 overzicht weergeven

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

J C

J C

01/05/2014 16:56:49
Quote Anchor link
Ik wil graag de inhoud van 2 tabellen in 1 overzicht samenvoegen.

In het onderstaande voorbeeld hebik even hetzelfde tabel gebruikt met alleen een andere naam bij het tabel.

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
$qry = mysql_query("
                    SELECT
                        bk_boekingen_kenmerk,
                        bk_boekingen_datum,
                        bk_boekingen_naam
                    FROM
                        bk_boekingen_versie3
                    WHERE
                        bk_boekingen_datum >='".$vandaag."'
                    AND
                        bk_boekingen_status=10
                    ORDER BY
                        bk_boekingen_datum ASC");
$qry = mysql_query("
                    SELECT
                        bk_boekingen_kenmerk,
                        bk_boekingen_datum,
                        bk_boekingen_naam
                    FROM
                        bk_boekingen_versie2
                    WHERE
                        bk_boekingen_datum >='".$vandaag."'
                    AND
                        bk_boekingen_status=10
                    ORDER BY
                        bk_boekingen_datum ASC");


En dat wil ik dan weergeven in 1 overzicht, waarbij ik alle inhoud wil weergeven gesorteerd op bk_boekingen_datum.

Ik hoef (denk ik) niet een complete oplossing, maar meer een duwtje in de goede richting.

Wat is absoluut niet wil ik de inhoud koppelen aan elkaar.
Gewijzigd op 01/05/2014 17:05:48 door J C
 
PHP hulp

PHP hulp

03/12/2024 18:10:53
 
Erwin H

Erwin H

01/05/2014 17:17:36
Quote Anchor link
Alleen een duwtje dan: UNION
Gewijzigd op 01/05/2014 17:17:53 door Erwin H
 
J C

J C

01/05/2014 17:20:05
Quote Anchor link
Aha, zoiets dacht ik al, maar ik kwam niet verder dan join en een hoop andere benamingen voor samenvoegen...

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
$qry = "
                   (SELECT
                        bk_boekingen_kenmerk,
                        bk_boekingen_datum,
                        bk_boekingen_naam
                    FROM
                        bk_boekingen_versie3)
                    UNION
                    (SELECT
                        bk_boekingen_kenmerk,
                        bk_boekingen_datum,
                        bk_boekingen_naam
                    FROM
                        bk_boekingen_versie2)
                    WHERE
                        bk_boekingen_datum >='".$vandaag."'
                    AND
                        bk_boekingen_status=10
                    ORDER BY
                        bk_boekingen_datum ASC)";
    $sql = mysql_query($qry);                    
        if($sql === false)
        {
        echo (" Er gaat iets mis in (".$qry .")".mysql_error());
        }
        else
        {        
            while($list = mysql_fetch_array($qry))
            {}
}


Nu even testen of dit ook zou werken.
Gewijzigd op 01/05/2014 17:27:36 door J C
 
Erwin H

Erwin H

01/05/2014 17:28:45
Quote Anchor link
Als je dan nog alle resultaten wilt sorteren op datum, dan moet je een ORDER BY buiten de UNION plaatsen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
(SELECT ....
FROM ...
WHERE...)
UNION
(SELECT ....
FROM ...
WHERE ...)
ORDER BY bk_boekingen_datum

Overigens, als je geen haakjes gebruikt, dan zal je laatste ORDER BY automatisch al alle records gebruiken, alleen omdat je die ORDER BY nu binnen de haakjes plaatst niet.
 
J C

J C

01/05/2014 17:30:57
Quote Anchor link
Ik had mijn topic inmiddels aangepast, was een beetje raar zo. Maar wederom mijn dank voor het meedenken.

Ik doe toch iets fout, of mijn server ondersteunt Union niet.

Ik heb nu dit:

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
$qry = "
                  ((SELECT
                        bk_boekingen_kenmerk,
                        bk_boekingen_datum,
                        bk_boekingen_naam
                    FROM
                        bk_boekingen_versie3
                    WHERE
                        bk_boekingen_datum >='".$vandaag."'
                    AND
                        bk_boekingen_status=10)
                    UNION
                    (SELECT
                        bk_boekingen_kenmerk,
                        bk_boekingen_datum,
                        bk_boekingen_naam
                    FROM
                        bk_boekingen_versie2
                    WHERE
                        bk_boekingen_datum >='".$vandaag."'
                    AND
                        bk_boekingen_status=10)
                    ORDER BY
                        bk_boekingen_datum ASC)";  
    $sql = mysql_query($qry);                    
        if($sql === false)
        {
        echo (" Er gaat iets mis in (".$qry .")".mysql_error());
        }
        else
        {        
            while($list = mysql_fetch_array($qry))
            {
            $main .= '
                <div class="homehalfcontainerrij" style="background:' . ($rijnummer++%2==0 ? "#FFF" : "#cccccc") . ';">
                    <div class="driekwarthalfcontainer"><a href="?pagina=boekingen&amp;do=boeking-detail&amp;kenmerk='.$list['bk_boekingen_kenmerk'].'">'.CutString($list['bk_boekingen_naam'],130).'</a></div>
                    <div class="kwarthalfcontainer">'.date("d-m-Y",$list['bk_boekingen_datum']).'</div>
                </div>
            ';
            }
        }


En krijg deze melding:
Er gaat iets mis in ( ((SELECT bk_boekingen_kenmerk, bk_boekingen_datum, bk_boekingen_naam FROM bk_boekingen_versie3 WHERE bk_boekingen_datum >='1398895200' AND bk_boekingen_status=10) UNION (SELECT bk_boekingen_kenmerk, bk_boekingen_datum, bk_boekingen_naam FROM bk_boekingen_versie2) WHERE bk_boekingen_datum >='1398895200' AND bk_boekingen_status=10 ORDER BY bk_boekingen_datum ASC))You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION (SELECT bk_boekingen_kenmerk, ' at line 11
Gewijzigd op 01/05/2014 17:36:38 door J C
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

01/05/2014 17:39:25
Quote Anchor link
Er staat een haakje teveel aan het begin van je query.
 
Erwin H

Erwin H

01/05/2014 17:40:56
Quote Anchor link
Die haakjes aan het begin en eind zijn in elk geval niet nodig. Misschien dat die ook de foutmelding opleveren.
 
J C

J C

01/05/2014 17:42:45
Quote Anchor link
Dacht ik eerst ook, maar dan krijg ik dit als melding:

Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in /home/s010485/domains/jcsl.nl/public_html/medewerkers/paginas/home.php on line 42
 
Erwin H

Erwin H

01/05/2014 17:45:18
Quote Anchor link
Dan gaat het dus goed :-)

De fout zit erin dat je je query string voert aan de fetch functie en niet het resultaat van de query. Dus niet $qry gebruiken, maar $sql op regel 32 hierboven.
 
J C

J C

01/05/2014 17:45:37
Quote Anchor link
Ok ik voel me heel dom.

while($list = mysql_fetch_array($qry))

moet natuurlijk

while($list = mysql_fetch_array($sql))

zijn.

Toevoeging op 01/05/2014 17:56:35:

De echte uitdaging gaat nu pas echt beginnen.

Voor mij tot nu toe de grootste qry die ik heb gemaakt.

Met deze query kan ik al onze boekingen oproepen, verdeeld op komende boekingen, afgelopen boekingen en gecancelde boekingen.
Maar een medewerker kan het ook zo selecteren dat het alleen de boekingen worden weergeven die hij heeft ingevoerd of juist waarbij hij staat in ingedeeld.

En dan wordt de truc nog om dat uit 3 tabellen te halen. (In de afgelopen 12 jaar is de opbouw van de tabellen 3 keer drastisch veranderd en niemand heeft tijd en zin om alles opnieuw in te voeren)

Als voorproefje:
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
$qry     ="
                    SELECT
                        bk_boekingen_kenmerk,
                        bk_boekingen_naam,
                        bk_boekingen_soort,
                        bk_boekingen_datum,
                        bk_locatie_naam                        
                    FROM
                    ";
// kijken of het om een persoon in het algemeen gaat                    
if(isset($_GET['persnr']))
{
$qry     .="
                        bk_personeel2,";
}
//                        
$qry     .="
                        bk_boekingen bk
                    LEFT JOIN
                        bk_locatie loc
                    ON     
                        bk.bk_boekingen_locatie_id=loc.bk_locatie_id
                    WHERE                        
                        ";
//datum bepalen                        
if($_GET['pagina'] == "boekingen")
{
    if($overzicht['selectie'] == 1)
    {
$qry     .="
                        bk.bk_boekingen_datum>=' ".$vandaag." '
                    AND
                        bk.bk_boekingen_status != 20";
    }
    elseif($overzicht['selectie'] == 2)
    {
$qry     .="
                        bk.bk_boekingen_datum<' ".$vandaag." '
                    AND
                        bk.bk_boekingen_datum>' ".$jaar."'
                    AND
                        bk.bk_boekingen_status != 20";
    }
    elseif($overzicht['selectie'] == 3)
    {
$qry     .="
                        bk.bk_boekingen_datum>' ".$jaar."'
                    AND
                        bk.bk_boekingen_status = 20";
    }
    elseif(isset($_GET['do']) && $_GET['do'] == "geschiedenis")
    {
$qry    .="
                        bk.bk_boekingen_datum<'".$vandaag."'
                        ";
    }                    
}
//
// kijken of het om een invoerpersoon gaat
if(isset($_GET['invoerpersnr']))
{
$qry    .="
                    AND
                        bk_boekingen_aannemer_id='".$_GET['invoerpersnr']."'
                        ";
}
///
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']))
{        
$qry    .="            
                    AND
                        bk_boekingen_kenmerk=bk_personeel_boeking_id
                    AND
                        bk_personeel_mw_id='".$_GET['persnr']."'
                    GROUP BY
                        bk_boekingen_kenmerk
                        ";
}
//
$qry    .="
                   ORDER BY
                        bk_boekingen_datum";
// Hoe gaan we sorteren?                        
if($_GET['pagina'] == "boekingen")
{
    if($overzicht['selectie'] == 2)
    {
$qry    .="
                        DESC
                ";
    }
    elseif(isset($_GET['do']) && $_GET['do'] == "geschiedenis")
    {
$qry    .="
                        DESC
                ";
    }
    else
    {
$qry    .="
                        ASC
                ";
    }
}
if($sql === false)
{
echo (" Er gaat iets mis in (".$qry .")".mysql_error());
}
else
{        
    while($list = mysql_fetch_array($sql))
    {
    $sql = mysql_query($qry);
    }
}
 



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.