 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
13.04.2003, 23:01
|
#1
|
|
TP-Member
Registriert seit: Jun 2001
Ort: NÖ/Austria
|
mysql abfrage
hi!
hab eine ziemlich komplexe (glaub ich halt) sql-abfrage vor und könnt ihr mir vielleicht dabei helfen:
habe folgende tabs:
user:
===================
user_id
user_kuenstlername
user_anrede
user_vorname
user_name
user_strasse
user_plz
user_ort
user_land
user_bundesland
user_telefon
user_fax
user_mobil
user_email
user_passwort
===================
details:
===================
details_userid
details_beschreibung
details_besetzung
details_preis
details_homepage
details_newsletter
===================
musikrichtungen:
===================
mr_userid
mr_richtung
===================
veranstaltungsarten:
===================
va_userid
va_art
===================
termine:
===================
termine_id
termine_userid
termine_name
termine_ort
termine_datum
===================
nun benötige ich eine abfrage, die folgendes einschränkt nach einer suchmaske.
der user soll in einem formular folgendes suchen können:
nach:
termine_datum
va_art
user_land
user_bundesland
mr_richtung
detilas_preis
ausgeben sollte dann user_kunestlername, user_land, details_preis werden!
bitte um hilfe!
gute nacht
hasibit
|
|
|
14.04.2003, 09:44
|
#2
|
|
TP-Senior
Registriert seit: Mar 2003
Ort: Leipzig
|
Vorschläge zum Lesen:
http://ffm.junetz.de/members/reeg/DS...00000000000000
http://www.little-idiot.de/mysql/mysql-118.html
Vorschlag für dein Script (bin mir nicht sicher, nicht getestet, alle Angaben wie immer ohne Schießeisen)
PHP-Code:
<?php
$sql = "SELECT user_kunestlername, user_land, details_preis
FROM user AS u, details AS d, musikrichtungen AS m, veranstaltungsarten AS v, termine AS t
WHERE u.user_id=d.details_userid AND u.user_id=m.mr_userid AND u.user_id=v.va_userid AND u.user_id=t.termine_userid";
// jetzt hängen wir noch die kriterien an, die der benutzer in die suchmaske eingegeben hat
$sql .= isset($_POST['termine_datum']) ? ' AND t.termine_datum=\''.$_POST['termine_datum'].'\'' : '';
$sql .= isset($_POST['va_art']) ? ' AND v.va_art=\''.$_POST['va_art'].'\'' : '';
$sql .= isset($_POST['user_land']) ? ' AND u.user_land=\''.$_POST['user_land'].'\'' : '';
$sql .= isset($_POST['user_bundesland']) ? ' AND u.user_bundesland=\''.$_POST['user_bundesland'].'\'' : '';
$sql .= isset($_POST['mr_richtung']) ? ' AND m.mr_richtung=\''.$_POST['mr_richtung'].'\'' : '';
$sql .= isset($_POST['details_preis']) ? ' AND d.details_preis<'.$_POST['details_preis'] : ''; // ich nehme mal an, das der benutzer einen maximalpreis angeben soll
if(! $result = mysql_query($sql) )
{
echo "Fehler in der Suchabfrage...<br />".$sql;
die;
}
while( $row = mysql_fetch_array($result) )
{
// hier dann halt die ausgabe, dass musst du selbst formatieren
echo "Künstler: " . $row['user_kunestlername'] . "<br />";
echo "Land: " . $row['user_land'] . "<br />";
echo "Preis: " . $row['details_preis'] . "<br /><br />";
}
wenn ich das prinzip des joins richtig verstanden habe, wäre ein join an dieser stelle deutlich effizienter. ich kann ihn aber nicht formulieren. kann mir da jemand helfen?
__________________
[ httpsmog]
"I have not failed. I've just found 10,000 ways that won't work." - Thomas Alva Edison (1847-1931)
Geändert von QCO (14.04.2003 um 12:39 Uhr).
|
|
|
14.04.2003, 12:16
|
#3
|
|
TP-Member
Registriert seit: Jun 2001
Ort: NÖ/Austria
|
hat mir schon sehr geholfen, danke!
ein frage noch: will alle kuenstler die >keinen< termin zum gesuchten datum eingetragen haben???
mfg hasibit
|
|
|
14.04.2003, 15:44
|
#4
|
|
TP-Member
Registriert seit: Jun 2001
Ort: NÖ/Austria
|
hab bisher das jetzt:
funktioniert eigentlich im großen und ganzen, doch ich will jetzt nur die,
die keinen termin am gesuchten datum eingetragen haben? wie frag ich das ab?
funktioniert mit <> nicht?? wie muss ich das anders machen??
PHP-Code:
$sql = "SELECT user_kuenstlername, user_land, details_preis
FROM user AS u, details AS d, musikrichtungen AS m, veranstaltungsarten AS v, termine AS t
WHERE u.user_id=d.details_userid AND u.user_id=m.mr_userid AND u.user_id=v.va_userid
AND u.user_id=t.termine_userid";
$sql .= " AND t.termine_datum <> \"$datum_new\"";
if($land != "Alle"){
$sql .= " AND u.user_land=\"$land\"";
}
if($bundesland != "Alle"){
if($land != "Andere"){
$sql .= " AND u.user_bundesland=\"$bundesland\"";
}
}
if($preis == "0" || $preis == "6001"){
$sql .= " AND d.details_preis >= \"$preis\"";
}
else{
$sql .= " AND d.details_preis <= \"$preis\"";
}
if (isset($va)) {
reset($va);
foreach ($va as $k => $value) {
$sql .= " AND v.va_art = \"$value\"";
}
}
if (isset($mr)) {
reset($mr);
foreach ($mr as $k => $value) {
$sql .= " AND m.mr_richtung = \"$value\"";
}
}
$sql .= " GROUP BY user_kuenstlername";
echo $sql;
$result = mysql_query($sql);
echo"<br><br>";
while( $row = mysql_fetch_array($result) )
{
echo "Künstler: " . $row['user_kuenstlername'] . "<br />";
echo "Land: " . $row['user_land'] . "<br />";
echo "Preis: " . $row['details_preis'] . "<br /><br />";
}
$num = mysql_affected_rows();
echo $num;
|
|
|
15.04.2003, 22:20
|
#5
|
|
TP-Member
Registriert seit: Jun 2001
Ort: NÖ/Austria
|
kann mir denn keiner helfen? 
brauche das bald!
grüsse
|
|
|
15.04.2003, 23:33
|
#6
|
|
TP-Specialist
Registriert seit: Aug 2002
Ort: Nähe Wien
|
woher aus nö bist denn?
|
|
|
15.04.2003, 23:34
|
#7
|
|
TP-Specialist
Registriert seit: Aug 2002
Ort: Nähe Wien
|
$sql .= " AND t.termine_datum = '0000-00-00';
denn das steht standardmäßig in einem datumsfeld drin, wenn es in mysql leer ist :-)
|
|
|
16.04.2003, 12:13
|
#8
|
|
TP-Member
Registriert seit: Jun 2001
Ort: NÖ/Austria
|
hallo kollege!
bin aus dem wunderschönen wald4tel!
nein ich glaub, das kann nicht funken!
nur ein kleines bsp:
eingetragene termine:
1
99999
zeltfest
wien
2003-06-01
2
100000
stadtfest
linz
2003-06-02
3
99999
hochzeit
salzburg
2003-06-02
jetzt suche ich alle user (bands) die am 2003-06-01 keinen termin eingetragen haben, also muss
dann die band mit der user-id 100000 ausgegeben werden?
grüsse hasibit
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 03:45 Uhr.
|
 |