ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
1259
1259
EMPFEHLEN
-
Hallo, ich steck mal wieder fest,
ich möchte die freien Stellen zu verschiedenen Berufen ermitteln, in PHP kein Problem:
Doch in Access schon eher,PHP-Code:<?php
mysql_connect("","root");
mysql_select_db("agentur");
// Anzahl aller Berufe ermitteln und ausgeben
$res1 = mysql_query("select * from beruf order by beruf asc");
$num1 = mysql_num_rows($res1);
echo "<h2>Es gibt $num1 verschiedene Berufe.</h2>";
echo "<table>";
echo "<tr><td><b>Beruf</b></td><td><b>Plätze</b></td></tr>";
while ($dsatz = mysql_fetch_assoc($res1))
{
// Anzahl der belegten Stellen zu einem Beruf
$sqlab2 = "select beruf from person where beruf like '" .$dsatz["beruf"] . "'";
$res2 = mysql_query($sqlab2);
$num2 = mysql_num_rows($res2);
$erg = $dsatz["anzahl"] - $num2;
// Ausgabe des Berufs und der freien Stellen
echo "<tr>";
echo "<td>".$dsatz["beruf"]. "</td><td align='right'>$erg</td>";
echo "</tr>";
}
echo "</table>";
?>
Die Anzahl der Berufe ermitteln auch nicht so schwer:
Code :1 2 3 4
'Anzahl der Berufe' sql = "SELECT Count(*) AS Anzahl FROM Berufe " Me.RecordSource = sql Me!txt_Anzahl.ControlSource = "Anzahl"
Doch jetzt ist die frage: Kann ich über eine Select-Anweisung in SQL alle Inhalte einer Tabelle lesen und diese dann wie in dem PHP-Code in einer While-Schleife verwenden um die freien Stellen zu ermitteln?
Bin um jede hilfe Dankbar
-
Code :
1
select b.beruf,(b.anzahl- (select count(*) from person p where p.beruf = b.beruf)) as anzahl from beruf b order by beruf asc
Die Query ist ungetestet, soll dir aber eine Idee liefern wie Du es berechnen könntest.
GrußInvent- IT-Services - www.invent-it.de
-Consulting& Konzeption
-Anwendungs- und Webentwicklung
-Hosting & Services
Profil Lexware-Module
-
Um die Berechnung geht es nicht unbedingt, sondern eher um die Ausgabe auf das Formular,
Beruf | freie Stellen
Feuerwehr | 12
TV-Studio | 8
Das muss wohl über ein array passieren oder?
aber wie mach ich das, dass jeweils dann der Beruf ausgegeben wird und dann die freien Stellen
Die Berechnung ist ja folgende:
Ich hab in einer Tabelle Berufe den jeweiligen Beruf und die max_Anzahl in einer Zeile.
In einer anderen Tabelle habe ich dann die Person und den Beruf stehen.
Die Anzahl aller Personen zu einem Beruf wird mit count ermittelt,
dann die Anzahl der Personen die einen Beruf gewählt haben mit der max_Anzahl aus der Anderen Tabelle(Berufe) subtrahiert und ausgegeben.
Muss doch über eine While-Schleife geschehen, damit jeder Datensatz nacheinander berechnet wird und dann ausgegeben.
Ich hab von Access eigentlich keinen Plan, muss das nur machen weil das mit einem anderen Programm verwendet werden soll
-
Meine bisherigen Codeschnippsel:
Code :1 2 3 4 5 6 7 8 9 10 11 12
Private Sub Form_Load() sql = "SELECT Count(*) AS AlleBerufe FROM Berufe" Me.RecordSource = sql Me!txt_Anzahl.ControlSource = "AlleBerufe" be = "SELECT Beruf From Berufe" anzBeruf = "SELECT Anzahl From Berufe" While (be) anz = "SELECT Count(*) AS anzBeruf FROM Personen WHERE Beruf LIKE = be" Wend End Sub
Dann muss noch berechnet werden:
erg = anzBerufe - anz
Ist die frage, ob das die richtige Vorgehensweise ist, und wie ich die Daten dann auf dem Formular untereinader anzeigen kann.
Desweiteren sollen die Daten alle paar Sekunden aktualisieren.Geändert von Barry007 (07.07.10 um 10:18 Uhr)
-
So, nun eine ander vorgehensweise, ich hab jetzt diese SQL-Anweisung:
Code :1 2 3
SELECT Berufe.Beruf, Berufe.Stellen-P.BesetzteStellen AS FreieStellen FROM Berufe, (SELECT Personen.Beruf, Count(Personen.name) as BesetzteStellen FROM Personen GROUP BY Personen.Beruf) AS P WHERE Berufe.Beruf=P.Beruf;
Doch weis ich nicht wo ich diese Eintragen muss um den Beruf und die freien Stellen anzeigen zu lassen. Ich hab sie in Datenherkunft eingetragen doch kommt dann immer die Meldung:
"Sie wollten eine Abfrage ausführen, die den angegebenen Ausdruck "berufe.anzahl-count(personen.beruf)' nicht als Teil der Aggregatfunktion einschließt."
Was mach ich falsch? Muss ich noch eine Abfrage erstellen?
Aber was für eine und wie?
Bitte helft mir, bin über jede Hilfe dankbar.Geändert von Barry007 (07.07.10 um 16:37 Uhr)
-
So hab das ergebniss für die die daran interessiert sind.
Code :1 2 3 4 5 6 7 8
SELECT Berufe.Beruf, Berufe.Stellen-NZ(P.BesetzteStellen,0) AS FreieStellen FROM Berufe Left Join (SELECT Personen.Beruf, Count(Personen.name) as BesetzteStellen FROM Personen GROUP BY Personen.Beruf) AS P ON Berufe.Beruf=P.Beruf;
Hier wird die Berechnung über die SQL-Anweisung als Abfrage gespeichert und durchgeführt.
Ähnliche Themen
-
Anweisung für IF-Schleife aus einem Sheet holen samt Anführungsstrichen
Von hwcsteffen im Forum Visual Basic 6.0Antworten: 4Letzter Beitrag: 12.05.09, 15:20 -
aus if Anweisung in entsprechende else Anweisung springen
Von BenschM@ster im Forum PHPAntworten: 7Letzter Beitrag: 27.11.08, 01:36 -
Schleife bis sich ein Wert ändert, dann die Schleife neu beginnen
Von Turtle78 im Forum PHPAntworten: 4Letzter Beitrag: 07.01.08, 17:14 -
2 Anweisung für For-Schleife?
Von Dragi im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 22.08.06, 09:39 -
LoadVars.onLoad in for-schleife wird erst nach Schleife abgearbeitet?
Von Lloyd im Forum Flash PlattformAntworten: 12Letzter Beitrag: 17.01.05, 18:34





Zitieren
Login





