query met AS in USB Webserver

Status
Niet open voor verdere reacties.

localhost111

Gebruiker
Lid geworden
21 mrt 2008
Berichten
5
De volgende query in de USB Webserver werkt wel, maar ik krijg niet de melding 'gemiddelde' op het scherm.

$query = "SELECT AVG (2002-geb_jaar) FROM bankier AS gemiddelde";

Wat doe ik fout met AS?
 
De alias (dus je "AS") moet achter hetgeen waar je de alias van wil zetten.

In jouw geval zou het dus worden:
PHP:
$query = "SELECT AVG (2002-`geb_jaar`) AS `gemiddelde` FROM `bankier`";

In jouw code heb je dus de "AS" (alias) áchter de tabelnaam staan. Hierdoor is de alias "gemiddelde" dus voor de tabel "bankier".
 
Ik heb deze query zo overgenomen, maar de term 'gemiddelde' verschijnt niet op het scherm.

Wel heb ik op alle mogelijke manieren de apostroftekens geplaatst, maar ook dat helpt niet.

Ondersteunt de USB Webserver deze opdracht misschien niet? De gemiddelde leeftijd verschijnt overigens wel correct.


De alias (dus je "AS") moet achter hetgeen waar je de alias van wil zetten.

In jouw geval zou het dus worden:
PHP:
$query = "SELECT AVG (2002-`geb_jaar`) AS `gemiddelde` FROM `bankier`";

In jouw code heb je dus de "AS" (alias) áchter de tabelnaam staan. Hierdoor is de alias "gemiddelde" dus voor de tabel "bankier".
 
Ik ken USB Webserver niet, maar zodra ik deze query in MySQL 3 uitvoer krijg ik keurig een gemiddelde terug; met de naam "gemiddelde".

En die apostrofs hebben daar niets mee te maken; deze zorgen enkel dat alle velden goed opgenomen worden.

Ik vind het vreemd dat het gemiddelde wél getoond wordt, maar de alias niet. Wanneer dit niet ondersteund zou worden zou de query een fout opleveren en dus niet uitvoeren :confused:


Edit: zou je je complete code (dus vanaf de query t/m het printen) eens kunnen plaatsen?
 
Laatst bewerkt:
Hierbij voeg ik het bestand.

Ondertussen kijk ik naar MySQL 3.
PHP:
<html>
<head>
<title>overzicht</title>
<?
include ("ydb_connect.inc.php");

$query = "SELECT AVG (2002-geb_jaar) AS gemiddelde FROM bankier"; // de SQL-query die wordt uitgevoerd
$resultaat = ""; // hierin wordt het resultaat van de query opgeslagen
$resultaat = mysql_query($query, $db);
mysql_close($db); // database afsluiten
?>
</head>

<body>
<h2>Het complete overzicht</h2>
<hr>
<?php
while(list($id,$naam,$naam1,$naam2,$naam3,$naam4,$naam5,$naam6,$naam7,$naam8,$naam9,$naam10,$naam11,$naam12,$naam13,$naam14,$naam15,$naam16,$naam17,$naam18) = mysql_fetch_row($resultaat)){
	echo "$id,$naam,$naam1,$naam2,$naam3,$naam4,$naam5,$naam6,$naam7,$naam8,$naam9,$naam10,$naam11,$naam12,$naam13,$naam14,$naam15,$naam16,$naam17,$naam18 "; 
	echo "(<a href=\"yverwijder.php?id=$id\">Verwijder</a>)<br>";
	echo "| <a href=\"ybewerk.php?id=$id\">Bijwerken</a>)<br>";
}
?>	
</body>
</html>

Ik ken USB Webserver niet, maar zodra ik deze query in MySQL 3 uitvoer krijg ik keurig een gemiddelde terug; met de naam "gemiddelde".

En die apostrofs hebben daar niets mee te maken; deze zorgen enkel dat alle velden goed opgenomen worden.

Ik vind het vreemd dat het gemiddelde wél getoond wordt, maar de alias niet. Wanneer dit niet ondersteund zou worden zou de query een fout opleveren en dus niet uitvoeren :confused:


Edit: zou je je complete code (dus vanaf de query t/m het printen) eens kunnen plaatsen?
 
Laatst bewerkt door een moderator:
Je selecteert maar 1 veld ("gemiddelde"), terwijl je in je lus een hele lijst met namen ophaalt ("list(....)").

Deze namen komen dan natuurlijk nooit overeen. De gemiddelde waarde zit nu in de variabele "$id".

PHP:
//In deze query selecteer je maar 1 veld: gemiddelde.
$query = "SELECT AVG (2002 - `geb_jaar`) AS `gemiddelde` FROM `bankier`";
$resultaat = mysql_query($query);

//Je haalt hier een stuk of 20 velden op, waarvan er bij deze query maar 1 nodig is.
//Je waarde van "gemiddeld" zit in de waarde "$id".
list($id,$naam,$naam1,$naam2,$naam3,$naam4,$naam5,$naam6,$naam7,$naam8,$naam9,$naam10,$naam11,$naam12,$naam13,$naam14,$naam15,$naam16,$naam17,$naam18) = mysql_fetch_row($resultaat);

//Print de gemiddelde waarde:
echo $id;


PS: In het vervolg graag even
PHP:
 en
tags gebruiken.
 
Dank je wel.

De code wordt hierdoor een stuk overzichtelijker.

Maar het woord 'gemiddelde' staat er nog niet bij.

Je selecteert maar 1 veld ("gemiddelde"), terwijl je in je lus een hele lijst met namen ophaalt ("list(....)").

Deze namen komen dan natuurlijk nooit overeen. De gemiddelde waarde zit nu in de variabele "$id".

PHP:
//In deze query selecteer je maar 1 veld: gemiddelde.
$query = "SELECT AVG (2002 - `geb_jaar`) AS `gemiddelde` FROM `bankier`";
$resultaat = mysql_query($query);

//Je haalt hier een stuk of 20 velden op, waarvan er bij deze query maar 1 nodig is.
//Je waarde van "gemiddeld" zit in de waarde "$id".
list($id,$naam,$naam1,$naam2,$naam3,$naam4,$naam5,$naam6,$naam7,$naam8,$naam9,$naam10,$naam11,$naam12,$naam13,$naam14,$naam15,$naam16,$naam17,$naam18) = mysql_fetch_row($resultaat);

//Print de gemiddelde waarde:
echo $id;


PS: In het vervolg graag even
PHP:
 en
tags gebruiken.
 
Wat wil je nou precies printen? De waarde van gemiddelde of het woord gemiddelde?

De waarde komt uit je query; het woord zal je zelf neer moeten zetten :confused:
 
Ik wil het woord 'gemiddelde' voor het antwoord hebben staan.

Eigenlijk had ik aangenomen dat dit automatisch gebeurde wanneer ik AS gebruikte, maar dat schijnt dus niet zo te zijn.

Ik moet dus zelf bij 'echo' het woord 'gemiddelde' typen.

Wat wil je nou precies printen? De waarde van gemiddelde of het woord gemiddelde?

De waarde komt uit je query; het woord zal je zelf neer moeten zetten :confused:
 
Ik wil het woord 'gemiddelde' voor het antwoord hebben staan.

Eigenlijk had ik aangenomen dat dit automatisch gebeurde wanneer ik AS gebruikte, maar dat schijnt dus niet zo te zijn.

Ik moet dus zelf bij 'echo' het woord 'gemiddelde' typen.

Juist. De "AS" (je alias) is enkel om de waarde uit de resultset te halen. Wanneer je bijv. een lange berekening doet (of zoals jij doet: een gemiddelde berekenen) wil je dit graag 'snel' kunnen benaderen door 1 enkel woord.
Wanneer je geen alias zou gebruiken, zou je de waarde op moeten vragen door "AVG (2002 - geb_jaar)" te gebruiken.
 
in mySQL 5:
Code:
SELECT AVG(2002 - geb_jaar) gemiddelde FROM bankier
dus gewoon de de originele kolomnaam/functie een spatie en dan je aliasnaam
 
in mySQL 5:
Code:
SELECT AVG(2002 - geb_jaar) gemiddelde FROM bankier
dus gewoon de de originele kolomnaam/functie een spatie en dan je aliasnaam

Dit werkt weer niet met de backticks (`), dus vandaar dat ik alsnog altijd "AS" gebruik.
Ook voor backwards-compatibility :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan