query in query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Enrico -

Enrico -

22/06/2011 21:48:54
Quote Anchor link
Ik heb een tabel producten met merken en types. Van één merk kunnen er meerdere types in de tabel staan. Nu wil ik een opsomming van de merken met daarachter alle types.

Onderstaand een query in query wat niet de juiste oplossing is. Hoe zou ik het anders aan kunnen pakken?

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
<?php
include('dbconnect.php');

$query = "SELECT DISTINCT merk FROM producten ORDER BY merk";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){

    $merk = $row['merk'];
    echo $merk;
    
    $query = "SELECT type FROM producten WHERE merk = ".$merk."";
    $result = mysql_query($query) or die(mysql_error());
    while($row = mysql_fetch_array($result)){
           $type = $row['type'];
        echo $type;
   }
}

?>
 
PHP hulp

PHP hulp

21/12/2024 08:51:47
 
Marco PHPJunky

Marco PHPJunky

22/06/2011 21:59:12
Quote Anchor link
hoezo werkt het niet ? geeft hij een error of een melding of wat ?
 
Enrico -

Enrico -

22/06/2011 22:02:21
Quote Anchor link
hij geeft Unknown column in 'where clause'
een query in query kan toch ook niet of wel?
 
Marco PHPJunky

Marco PHPJunky

22/06/2011 22:05:58
Quote Anchor link
ja zeker kan dat...
maar geeft hij wel iets weer bij echo $merk ?

en anders kan je altijd nog kijken naar Multi Query
Gewijzigd op 22/06/2011 22:06:37 door Marco PHPJunky
 
Enrico -

Enrico -

22/06/2011 22:08:13
Quote Anchor link
ben weer een stapje verder $merk tussen '' gezet en nu geeft hij het eerste merk met het type.
Maar waarom stopt hij bij de eerste en laat hij niet alle merken met types zien?

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
<?php
include('dbconnect.php');

$query = "SELECT DISTINCT merk FROM producten ORDER BY merk";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){

    $merk = $row['merk'];
    echo $merk;
    
    $query = "SELECT type FROM producten WHERE merk = '$merk'";
    $result = mysql_query($query) or die(mysql_error());
    while($row = mysql_fetch_array($result)){
           $type = $row['type'];
        echo $type;
   }
}

?>


Toevoeging op 22/06/2011 22:14:45:

en als ik "ORDER BY merk" weg haal in de query dan laat hij alleen het laatst ingevoerde merk zien?
 
Marco PHPJunky

Marco PHPJunky

22/06/2011 22:19:18
Quote Anchor link
heb je veel dubbelde waardes in je DB staan ?
laat hij wel alles zien als je alleen de 1ste query door een while() heen haalt ?

of waarom haal je het anders distinct op ?
 
Enrico -

Enrico -

22/06/2011 22:23:47
Quote Anchor link
Ja hij laat alles zien met alleen de 1e query. Distinct is om de dubbele merken niet dubbel weer te geven.

Dit zijn de ingevoerde merken met types tot nu toe:

Porsche 300
Chevrolet Corvette
Volvo 125
Ford T800
Porsche 911

Als ik "ORDER BY merk" weghaal is de output: Porsche911300

Hij doet het dus wel goed, alleen laat hij maar één merk zien ipv alle merken?
 
Marco PHPJunky

Marco PHPJunky

22/06/2011 22:34:16
Quote Anchor link
zijn dat verschillende collums ? of 1 en dezelfde
 
Enrico -

Enrico -

22/06/2011 22:39:19
Quote Anchor link
nee verschillende kolommen; merk en type

Toevoeging op 22/06/2011 22:49:21:

ik heb het gevonden. In de tweede query wordt ook $result gebruikt, net als in de eerste query.
Als je in de tweede query $result verandert in iets anders dan doet hij het. Marco bedankt voor het meedenken :-)
 
- SanThe -

- SanThe -

22/06/2011 22:54:25
Quote Anchor link
Je gebruikt dezelfde $result in beide while()'s, dat gaat niet goed. Ze overschrijven elkaar.

Edit: Oeps, net te laat.
Gewijzigd op 22/06/2011 22:55:30 door - SanThe -
 
Victor -

Victor -

22/06/2011 23:01:46
Quote Anchor link
Kan je niet gewoon meteen joinen? of heb je ze allemaal nodig?
 
Tobias Tobias

Tobias Tobias

23/06/2011 06:49:13
Quote Anchor link
als je de boel werkend hebt, haal dan de "or die" er nog uit, en zet er een goede foutafhandeling in: Zie hier
Gewijzigd op 23/06/2011 06:49:42 door Tobias Tobias
 



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.