PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Erstellen von Datenbank


stoppel66
30.11.2005, 14:10:24
Hallo ,

hat mir vielleicht irgendjemand einen Lösungsansatz für ein neues DB-Design.

Wert 1 :es ist bei 0€ bis 10.000€ folgende protzensätze hinterlegt 2,5, 2,3 und 1,9
Wert 2 :es ist bei 10.001 € bis 25000€ folgende protzensätze hinterlegt 2,3, 2,1 und 1,85
Wert 3: es ist bei 25.001€ bis 50.000€ folgende protzensätze hinterlegt 2,1, 2,0 und 1,75

Jetzt bekomme ich von einem eingabeformular den Wert 17.300€.
Dann muss mit einer abfrage die Protzentwerte von Wert 2 zurückgeben.

1. Problem Datenbank -Design
2. SQL abfrage

Achim

Opendix
30.11.2005, 14:37:36
Hmm… also wenn ich dich richtig verstanden habe würde ich das so machen:
Eine Tabelle mit 6 spalten
Id – primary key – auto_increment
MinWert – startwert des Betrags
MaxWert – endwret des Betrags
P1 – Prozentwert1
P2 – Prozentwert2
P3 – Prozentwert3

Nun kannst du ganz einfach eine abfrage machen:

SELECT p1,p2,p3 FROM deinerTabelle WHERE MinWert < $wert AND MaxWert > $wert


aber für was brauchst du dafür eine Tabelle? Wäre doch einfacher dies bisschen glich in PHP zu machen…

stoppel66
30.11.2005, 15:08:54
Danke für die schnelle antwort,

werde mich gleich dran machen alles umzusetzen.

Sind etwa 15 Tabellen, jede Tabelle entspricht einem anderen Typ und und hat
andere Protzentwerte.

Danke Achim

Opendix
30.11.2005, 15:27:59
also machst du jetzt 15 tabellen mit je 3 Datensätzen?

na da würde ich eher noch ein weiteres feld hinzufügen das du vielleicht typ nennst, da machst du den für jeden verschiedenen typ eine eigene Nummer

Sprich solche Datensätze

Id – typ – min - …
1 – 1 – 0 – …
2 – 1 – 10000…
3 – 1 – 25000…
4 – 2 – 0…
5 – 2 – 10000…
6 – 2 – 25000…
7 – 3 – 0…



dann kannst du dann einfach in der Abfrage sowas machen wie:

SELECT p1,p2,p3 FROM deinertabelle WHERE minWert < $wert AND maxWert > $wert AND typ = 1

stoppel66
30.11.2005, 16:07:49
Hallo nochmal,

habe DB jetz mit typ erweitert ist besser so (supi Danke)
Nur abfrage geht durch aber bei while ($row.. ) bleibt er hängen.
arbeite mit PHPEdit.
if ($bootstyp == "kat1"){
if ($fahrgebiet == "a" ){
$abf_ka_a = "SELECT 250,500,1000 FROM `ka_fahrg_a1_mo_neu` WHERE minWert < $zeitwert AND maxWert > $zeitwert AND typ = a";
$erg_ka_a = mysql_query($abf_ka_a);
while($row = mysql_fetch_object($erg_ka_a))
{
echo "$row->id";
echo "$row->MinWert";
echo "$row->MaxWert";
echo "$row->250";
echo "$row->500";
echo "$row->1000;
}
}
}

Gruss Achim

Opendix
30.11.2005, 16:38:31
Hast du jetzt da die spalten mit den zahlen benannt oder willst du die zahlen abfragen?

Gibt mysql_error() irgendein fehler aus?

Mysql_fetch_object kenn ich net ma *g* (sollte ich vielleicht mal anschaun :P)
aber was da wohl kaum gehen wird ist, dass wenn du die 3 spalten selectierst in deiner abfrage, dass du dann alle asugeben kannst! da müsstest du alle spalten in dein SELECT rein machen...
Ich mach des immers so:


$query = "SELECT id, name FROm tabelle";
$insert = mysql_query($query);
while($daten = mysql_fetch_assoc($insert))
{
echo $daten['id'];
echo $daten['name'];
}


und dann setz die variabeln $zweitwert noch in ''

stoppel66
30.11.2005, 17:00:05
hat jetzt geklapt.
Frage: Kann ein feldname nur aus zahlen bestehen oder gibt es dabei probleme?

Achim

stoppel66
30.11.2005, 22:31:18
jetz habe ich noch probleme beim abfragen.

ist der Wert der abgefragt 100 oder 1000 wird der Wert richtig angezeigt.
Ist der Wert 200 wird 12501 MinWert und 25000 MaxWert angezeigt.
Habe mehrere Werte probiert und festgestellt das die erste Zahl des Wertes auschlaggebend ist für die auswertung.

Achim

vt1816
01.12.2005, 11:38:46
jetz habe ich noch probleme beim abfragen.

ist der Wert der abgefragt 100 oder 1000 wird der Wert richtig angezeigt.
Ist der Wert 200 wird 12501 MinWert und 25000 MaxWert angezeigt.
Habe mehrere Werte probiert und festgestellt das die erste Zahl des Wertes auschlaggebend ist für die auswertung.

AchimWie sieht Deine Abfrage aus?

stoppel66
01.12.2005, 13:16:46
Hallo,
[CODE]
hier ist die Tabelle die Abgefragt wird:
--
-- Tabellenstruktur für Tabelle `test`
--

CREATE TABLE `test` (
`ID` smallint(2) NOT NULL default '0',
`von` varchar(10) NOT NULL default '',
`bis` varchar(10) NOT NULL default '',
`prozent1` varchar(5) NOT NULL default '',
`prozent2` varchar(5) NOT NULL default '',
`prozent3` varchar(5) NOT NULL default '',
PRIMARY KEY (`ID`)
) TYPE=MyISAM;

--
-- Daten für Tabelle `test`
--

INSERT INTO `test` VALUES (0, '0', '1000', '1', '2', '3');
INSERT INTO `test` VALUES (1, '1001', '10000', '2', '3', '4');
INSERT INTO `test` VALUES (3, '10001', '25000', '3', '4', '5');
INSERT INTO `test` VALUES (4, '25001', '50000', '4', '5', '6');
INSERT INTO `test` VALUES (5, '50001', '500000', '5', '6', '7');




hier meine Abfrage :

$sql = "SELECT * FROM test WHERE von <= '$wert' AND bis >= '$wert' ;";
$result =mysql_query($sql);
while($row = mysql_fetch_object($result)){

$id = "$row->ID";
$von = "$row->von";
$bis = "$row->bis";
$proz1 = "$row->prozent1";
$proz2 = "$row->prozent2";
$proz3 = "$row->prozent3";

echo "$id<br>";
echo "$von<br>";
echo "$bis<br>";
echo "$proz1<br>";
echo "$proz2<br>";
echo "$proz3<br>";
}



Gruss Achim

Opendix
01.12.2005, 13:38:17
erstell die felder von und bis in der tabelle mal als integer!

stoppel66
01.12.2005, 13:42:53
Hey funzt, Super Danke

Achim

vt1816
01.12.2005, 13:44:12
Wandel in Deiner Tabelle 'von und 'bis' in numerische Werte (int) um, dann sollte auch der Vergleich klappen.