WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 02.08.2004, 20:08   #1
reichr
Veteran
 
Registriert seit: 31.12.2002
Beiträge: 390


reichr eine Nachricht über ICQ schicken
Standard Abfrage /PHP/MySql

hallo!

habe 2 tabellen:

veranstaltung
veranstaltung_option

nun habe ich eine select anweisung in einer while schleife
die mir 3 kategorien ausgibt..

unter jeder kategorie soll nun der günstigste optionspreis stehen!

dH in der tabelle veranstaltung_option steht in der spalte opt_preis eine zahl. nun soll in dieser while schleife noch eine abfrage sein
der mir den kleinsten wert der spalte opt_preis zurückgibt!


es sind für jede veranstaltung mehrere optionspreise vergeben.
verknüpfung: $veranstaltung[id] = option_id

wie mach ich das am besten???
____________________________________
lg


Chris
reichr ist offline   Mit Zitat antworten
Alt 03.08.2004, 07:09   #2
Hussl
Veteran
 
Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320


Standard

Wenn ich dich richtig verstanden habe, dann müsste das doch mit der Group by-, Min-, bzw. Max-Funktion funktionieren.

Mehr Infos: http://dev.mysql.com/doc/mysql/en/GR...Functions.html
____________________________________
Nein, ich bin nicht die Signatur, ich putz hier nur.

http://www.chili-it.at
Hussl ist offline   Mit Zitat antworten
Alt 03.08.2004, 08:03   #3
reichr
Veteran
 
Registriert seit: 31.12.2002
Beiträge: 390


reichr eine Nachricht über ICQ schicken
Standard

habs jetz so mal gelöst:



PHP-Code:
$sqlbefehl"Select b.id,a.verid,a.optpreis
             From $tab_veranstaltung b
             Left join $tab_veropt a on a.verid=b.id
             Where b.id='$ver[id]' order by optpreis asc limit 0,1"
;
$ergebnis  mysql_query($sqlbefehl$serverid);
if (
mysql_num_rows($ergebnis) == 1) {
$vermysql_fetch_array ($ergebnis);
 echo 
"ab $ver[optpreis] Euro"; } 


nur:
es kommen jetzt wieder alle datensätze raus!

zB
100
50
20

wo kann ich hier das group by oder min einbauen??

wie kann ich das jetzt auf das kleinste reduzieren, damit mir nur der wert mit 20 rauskommt und die anderen werte nicht?

ich muss leider die veranstaltungen in einer while schleife davor abfragen damit ich alle veranstaltungen habe und hier den "ab" preis aus der veranstaltungs id herauszubekommen.
____________________________________
lg


Chris
reichr ist offline   Mit Zitat antworten
Alt 03.08.2004, 08:19   #4
Hussl
Veteran
 
Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320


Standard

Hab mit MySQL jetzt nicht so die Erfahrung, aber probiers mal damit:

Code:
SELECT b.id, a.verid, MIN(a.optpreis)
FROM $tab_veranstaltung b LEFT JOIN $tab_veropt a ON a.verid=b.id 
WHERE b.id='$ver[id]' 
GROUP BY b.id;
Bin mir jedoch mit dem b.id als Gruppierung nicht ganz sicher. Aber damit solltest du, glaub ich, zu jeder Veranstaltung den niedrigsten Preis bekommen.

Was mir jedoch noch nicht ganz klar ist, warum du eine While-Schleife brauchst, um alle Veranstaltungen zu bekommen?
____________________________________
Nein, ich bin nicht die Signatur, ich putz hier nur.

http://www.chili-it.at
Hussl ist offline   Mit Zitat antworten
Alt 03.08.2004, 08:26   #5
reichr
Veteran
 
Registriert seit: 31.12.2002
Beiträge: 390


reichr eine Nachricht über ICQ schicken
Standard

mmh.. thx..
wars aber nicht leider ...

die schleife - für die formatierung
____________________________________
lg


Chris
reichr ist offline   Mit Zitat antworten
Alt 03.08.2004, 10:23   #6
Hussl
Veteran
 
Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320


Standard

Gibts eine Fehlermeldung? Oder kommt nur das falsche raus? Wenn ja, kommen dann wieder alle Datensätze zurück?

Kannst du vielleicht testweise Daten wie sie in der Tabelle stehen posten? Ich tu mir da immer leichter
____________________________________
Nein, ich bin nicht die Signatur, ich putz hier nur.

http://www.chili-it.at
Hussl ist offline   Mit Zitat antworten
Alt 03.08.2004, 10:28   #7
reichr
Veteran
 
Registriert seit: 31.12.2002
Beiträge: 390


reichr eine Nachricht über ICQ schicken
Standard

naja.. es werden ja nur die bezeichnungen der veranstaltung ausgegeben!


--------------------
ROCK POP
ab 20 euro


--------------------
JAZZ
ab 29 euro


--------------------
FUNK
ab 12 euro




so solls aussehen
die überschriften us funktionieren ja sowies soll
nur der ab preis net
____________________________________
lg


Chris
reichr ist offline   Mit Zitat antworten
Alt 03.08.2004, 11:03   #8
Hussl
Veteran
 
Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320


Standard

Hmm, ich steh irgendwie an. Ich weiß nicht woran der Fehler liegen sollte.

Was mir jedoch aufgefallen ist:

PHP-Code:
$sqlbefehl"Select b.id,a.verid,a.optpreis 
             From $tab_veranstaltung b 
             Left join $tab_veropt a on a.verid=b.id 
             Where b.id='$ver[id]' order by optpreis asc limit 0,1"

Hier verwendest du die Variable $ver[id]. Das kommt von der besagten Schleife?

PHP-Code:
$vermysql_fetch_array ($ergebnis); 
Und hier lädst du das Recordset wieder in diese Variable. Vielleicht solltest du hier eine andere Variable verwenden, da du dir hiermit die Variable der Schleife überschreibst.


Wenn das alles Blödsinn ist, möge man es mir verzeihen
____________________________________
Nein, ich bin nicht die Signatur, ich putz hier nur.

http://www.chili-it.at
Hussl ist offline   Mit Zitat antworten
Alt 03.08.2004, 11:04   #9
reichr
Veteran
 
Registriert seit: 31.12.2002
Beiträge: 390


reichr eine Nachricht über ICQ schicken
Standard

genau .. kommt von der schleife!
mmh.. muss ich mir jetz mal anschaun..
____________________________________
lg


Chris
reichr ist offline   Mit Zitat antworten
Alt 03.08.2004, 11:11   #10
reichr
Veteran
 
Registriert seit: 31.12.2002
Beiträge: 390


reichr eine Nachricht über ICQ schicken
Standard

achnö.. die $ver[id] ist von dem select für den "ab" preis
so sieht das ganze aus:

PHP-Code:
$sqlbefehl"Select * FROM $tab_veranstaltung
             Where catid='$subcat[id]'
             And status <> 'versteckt'
             Order by sortid LIMIT $eintrag,$zps"
;
$getver mysql_query($sqlbefehl$serverid);
if (
mysql_num_rows($getver) > ) {
while ( 
$ver mysql_fetch_array ($getver )) {
$sqlbefehl"Select b.id,a.artid,a.artpreis
             From $tab_veranstaltung b
             Left join $tab_veropt a on a.verid=b.id
             Where b.id='$ver[id]' order by optpreis asc limit 0,1"
;
$ergebnis  mysql_query($sqlbefehl$serverid);
if (
mysql_num_rows($ergebnis) == 1) {
$ver1mysql_fetch_array ($ergebnis);

 echo 
"ab $ver1[optpreis] Euro
"
; }} 
____________________________________
lg


Chris
reichr ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:35 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag