Joins
lasdesigner - 29/09/2006 16:13
PHP beginner
Hallo, ik ben bezig met een Join query:
Tabellen:
Auto
- Id
- Waarde (totaal)
- Naam
Garage
- Id
- Lid_id
- Auto_id
- Schade
Ik wil de totale waarde van alle auto's weten. Ik heb dit zo gedaan:
SELECT
garage.id,
garage.schade
auto.waarde
FROM
garage
INNER JOIN
auto
ON
(garage.auto_id = auto.id)
WHERE
lid_id = 1
SELECT
garage. id,
garage. schade
auto. waarde
FROM
garage
auto
ON
( garage. auto_id = auto. id)
WHERE
lid_id = 1
Maar doet het niet, kan iemand mij helpen?
17 antwoorden
Gesponsorde links
Wijnand - 29/09/2006 16:20 (laatste wijziging 29/09/2006 16:21)
Moderator
SELECT
SUM(`auto`.`waarde`)
FROM
`garage`
INNER JOIN
`auto`
ON
`garage`.`auto_id` = `auto`.`id`
WHERE
`garage`.`lid_id` = 1;
SELECT
SUM( `auto`. `waarde`)
FROM
`garage`
`auto`
ON
`garage`. `auto_id` = `auto`. `id`
WHERE
`garage`. `lid_id` = 1 ;
Zo zou het moeten werken. Tenminste als je de waarde wilt weten van de auto's per garage per user.
Thomas - 29/09/2006 16:23
Moderator
Er zijn meer auto's dan garages lijkt me, dus INNER JOIN zal niet het gewenste resultaat opleveren.
Waarom wil je uberhaupt de tabel Garage in je query betrekken? Deze heb je toch niet nodig.
lasdesigner - 29/09/2006 16:34 (laatste wijziging 29/09/2006 16:35)
PHP beginner
Ehh, precies andersom, garage betekend het aantal autos dat in de garage staat. Auto zijn alleen de soorten.
@Wijnand,
Klopt niet, de schade moet er nog is vanaf!
MechaVore - 29/09/2006 19:23
PHP gevorderde
SELECT SUM(Auto.Waarde) FROM Garage INNER JOIN Auto ON(Garage.Auto_id = Auto.Id) WHERE Garage.Lid_id = 1
SELECT SUM
( Auto
. Waarde
) FROM Garage INNER
JOIN Auto ON
( Garage
. Auto_id
= Auto
. Id
) WHERE Garage
. Lid_id
= 1
lasdesigner - 30/09/2006 11:26
PHP beginner
SELECT (Auto.waarde / 100) * (100-Garage.schade) FROM Garage INNER JOIN Auto ON(Garage.Auto_id = Auto.Id) WHERE Garage.Lid_id = 1
SELECT
( Auto
. waarde
/ 100 ) * ( 100 - Garage
. schade
) FROM Garage INNER
JOIN Auto ON
( Garage
. Auto_id
= Auto
. Id
) WHERE Garage
. Lid_id
= 1
-> Wat doe ik verkeerd? (Want de schade meot er nog is van afgetrokken zijn!)
lasdesigner - 30/09/2006 12:20 (laatste wijziging 30/09/2006 12:33)
PHP beginner
Klopt thx!
En hoe kan ik nu (met JOINS) de waarde van 1 auto (- de schade) berekenen?
Klopt niet trouwens! De schade is in procent!!
MechaVore - 30/09/2006 14:45 (laatste wijziging 30/09/2006 14:58)
PHP gevorderde
Bedoel je dus eigenlijk: De garage van een speler?
SELECT
Auto.Naam,
ROUND(Auto.Waarde/100 * (100 - Garage.Schade)) AS AutoWaarde,
Auto.Waarde,
Garage.Schade
FROM Garage
INNER JOIN Auto ON ( Garage.Auto_id = Auto.Id )
WHERE Garage.Lid_id = 1
ORDER BY Auto.Naam ASC
SELECT
Auto. Naam,
ROUND ( Auto
. Waarde
/ 100 * ( 100 - Garage
. Schade
) ) AS AutoWaarde
, Auto. Waarde,
Garage. Schade
FROM Garage
INNER
JOIN Auto ON
( Garage
. Auto_id
= Auto
. Id
) WHERE Garage. Lid_id = 1
ORDER BY Auto. Naam ASC
lasdesigner - 30/09/2006 14:51
PHP beginner
Precies, en dan moet ik daar gewoon een for loop omheen zetten?
MechaVore - 30/09/2006 14:59 (laatste wijziging 30/09/2006 15:00)
PHP gevorderde
For loop? Je wilt toch gewoon de garage van een speler bekijken? Je kan het gewoon in een while loop fetchen hoor .
<?
$rSql = mysql_query("SELECT
Auto.Naam,
ROUND(Auto.Waarde/100 * (100 - Garage.Schade)) AS AutoWaarde,
Auto.Waarde,
Garage.Schade
FROM Garage
INNER JOIN Auto ON ( Garage.Auto_id = Auto.Id )
WHERE Garage.Lid_id = 1
ORDER BY Auto.Naam ASC")or die(mysql_error());
while($aAssoc = mysql_fetch_assoc($rSql)){
echo "Auto: " .$aAssoc["Naam"] ."<br />";
echo "Waarde (Nieuw): " .$aAssoc["Waarde"] ."<br />";
echo "Waarde: " .$aAssoc["AutoWaarde"] ."<br />";
echo "Schade: " .$aAssoc["Schade"] ."<br /><br />";
}
?>
<?
Auto.Naam,
ROUND(Auto.Waarde/100 * (100 - Garage.Schade)) AS AutoWaarde,
Auto.Waarde,
Garage.Schade
FROM Garage
INNER JOIN Auto ON ( Garage.Auto_id = Auto.Id )
WHERE Garage.Lid_id = 1
echo "Auto: " . $aAssoc [ "Naam" ] . "<br />" ; echo "Waarde (Nieuw): " . $aAssoc [ "Waarde" ] . "<br />" ; echo "Waarde: " . $aAssoc [ "AutoWaarde" ] . "<br />" ; echo "Schade: " . $aAssoc [ "Schade" ] . "<br /><br />" ; }
?>
lasdesigner - 30/09/2006 15:02
PHP beginner
Nee, want bji mij komen de gegevens in een array. Ik gebruik namelijk een database class.
MechaVore - 30/09/2006 15:12
PHP gevorderde
Tip:
Haal die count uit je conditie van je for loop, omdat die nu elke keer weer uitgevoerd wordt.
<?
$db = $garage->AlleAutos($_SESSION['id']);
$iCount = count($db);
for($i = 0; $i<$iCount; $i++) {
echo "Auto: ".$db[$i]['Naam']."<BR />";
echo "Waarde (nieuw): ".$db[$i]['Waarde']."<BR />";
echo "Waarde: ".$db[$i]['AutoWaarde']."<BR />";
echo "Schade: ".$db[$i]['Schade']."<BR />";
echo "<hr />";
}
?>
<?
$db = $garage -> AlleAutos ( $_SESSION [ 'id' ] ) ;
for ( $i = 0 ; $i < $iCount ; $i ++ ) {
echo "Auto: " . $db [ $i ] [ 'Naam' ] . "<BR />" ; echo "Waarde (nieuw): " . $db [ $i ] [ 'Waarde' ] . "<BR />" ; echo "Waarde: " . $db [ $i ] [ 'AutoWaarde' ] . "<BR />" ; echo "Schade: " . $db [ $i ] [ 'Schade' ] . "<BR />" ; }
?>
Gesponsorde links
Dit onderwerp is gesloten .