Hallo zusammen,
ich hab mich hier angemeldet, weil ich einfach nicht mehr weiter weiß...
Folgendes Problem (Kurzdarstellung):
Ich habe insgesamt zwei Tabellen:
In der ersten mit dem Namen "gebaeude" sind bestimmte Gebäude aufgelistet mit ihren jeweiligen Eigenschaften wie: id, art, name, kosten, verbrauch, produktion, etc.
Der Aufbau der Tabelle ist wie folgt entstanden:
Es gibt verschiedene Gebäude einer Art wie beispielsweise:
name = "Kohlekraftwerk" und Name = "Atomkraftwerk" für art = "Energie"
name = "Haus" und Name = "Hochhaus" für art = "Wohngebäude"
Für die einzelnen Arten wurden jeweils unterschiedliche id-Bereiche gewählt, sodass "Energie" bspw. von 1 - 19 geht, "Wohngebäude" von 20 - 29, usw.
Es müssen allerdings nicht alle IDs für Energie in diesem Rahmen belegt werden...
Konkret:
"name" besitzt die "ID"
"Kohlekraftwerk" = "1"
"Atomkraftwerk" = "2"
"Haus" = "20"
"Hochhaus" = "21"
etc.
Die zweite Tabelle mit dem Namen "universe" sind einzelne Landstriche mit Städten, wobei jede Stadt wiederum wieder einzelne / mehrere Gebäude enthalten kann.
Der Aufbau ist wie folgt:
id = Id der jeweiligen Stadt (auto-increament)
region = Koordinaten der Stadt
usw.
(für den folgenden Text auch)
gebaeude_id_1 = Anzahl der Gebäude der id mit der Nummer "1" (Kohlekraftwerk) der Tabelle von gebaeuden
gebaeude_id_2 = Anzahl der Gebäude der id mit der Nummer "2" (Atomkraftwerk) der Tabelle von gebaeuden
gebaeude_id_20 = Anzahl der Gebäude der id mit der Nummer "20" (Haus) der Tabelle von gebaeuden
gebaeude_id_21 = Anzahl der Gebäude der id mit der Nummer "21" (Hochhhaus) der Tabelle von gebaeuden
Mein Problem ist nun, festzustellen wieviele Gebäude in jeder Stadt vorhanden sind und die entsprechende Produktion / Verbrauch auszugeben und zu bestimmen...
Mein erster Ansatz war wie folg:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29: |
$glob_buildings = db_query("SELECT * FROM ".$db_prefix."_gebaeude");
$glob_planis = db_query("SELECT * FROM ".$db_prefix."_universe WHERE owner_id != 0");
echo '
Planet / Gebäude |
';
while($building_info = mysql_fetch_array($glob_buildings))
{
echo ''.$building_info['gebaeude_name'].' ('.$building_info['gebaeude_id'].') | ';
}
while($plani_info = mysql_fetch_array($glob_planis))
{
echo ' '.$plani_info['id'].' | ';
while($building_info_2 = mysql_fetch_array($glob_buildings))
{
$building_info_2_id = $building_info_2['gebaeude_id'];
echo ''.$plani_info['gebaeude_id_'.$building_info_2_id].' | ';
}
echo ' ';
}
echo '
';
|
Das funktioniert allerdings nicht...
Gebe ich zu Beginn bei den ersten beiden Querys noch die Dritte Zeile
1: | $glob_buildings_2 = db_query("SELECT * FROM ".$db_prefix."_gebaeude"); |
ein und ändere die dritte while-Schleife in
1: | while($building_info_2 = mysql_fetch_array($glob_buildings_2)) |
dann funktioniert die Ausgabe lediglich für die erste Stadt...
Der Grundgedanke war eigentlich:
1. Alle vorhandenen Gebäude-IDs aus "gebaeude" zu holen (gebaeude.id).
2. Alle Städte, die noch nicht besetzt sind auszuwähen (WHERE owner_id != '0').
3. Die einzelne Anzahl der vorhandenen Gebäude eines jeden Typs (gebaeude_id_???) für jede Stadt zu bestimmen (SELECT gebaeude_id_1, gebaeude_id_2, gebaeude_id_3,...) und diese dann
4. mit den Eigenschaften (Prduktion/Verbrauch) der jeweiligen Gebäude aus (SELECT * FROM gebaeude) zu multiplizieren, aber ich komme irgendwie nicht weiter...
Keine Ahnung, ob es mit while-Schleifen, arrays() mit for- bzw. foreach oder gar mit irgendwelchen JOINS funktionieren kann...
Als zusätzliche Info:
Datensätze der Tabelle gebaeude sind ca. 50
Datenstäze der Tabelle universe sind ca. 4.000
(daher wollte ich zwischen die while-Schleifen eigentlich nicht jedesmal noch eine zusätzliche db_query() einbauen...)
Wäre kuhl, wenn einer ne Lösung oder nen Lösungsweg wüsste.