tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
1259
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Barry007 Barry007 ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    18
    Hallo, ich steck mal wieder fest,

    ich möchte die freien Stellen zu verschiedenen Berufen ermitteln, in PHP kein Problem:

    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&auml;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>";
      
    ?>
    Doch in Access schon eher,

    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
     

  2. #2
    ripkens ripkens ist offline Mitglied Gold
    Registriert seit
    Jul 2005
    Ort
    NRW
    Beiträge
    161
    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

  3. #3
    Barry007 Barry007 ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    18
    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
     

  4. #4
    Barry007 Barry007 ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    18
    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)
     

  5. #5
    Barry007 Barry007 ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    18
    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)
     

  6. #6
    Barry007 Barry007 ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    18
    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

  1. Antworten: 4
    Letzter Beitrag: 12.05.09, 15:20
  2. Antworten: 7
    Letzter Beitrag: 27.11.08, 01:36
  3. Antworten: 4
    Letzter Beitrag: 07.01.08, 17:14
  4. 2 Anweisung für For-Schleife?
    Von Dragi im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 22.08.06, 09:39
  5. Antworten: 12
    Letzter Beitrag: 17.01.05, 18:34

Stichworte