Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]3790[/thread]

mysql (vermutlich etwas mit IF)



<< >> 10 Einträge, 1 Seite
Froschpopo
 2007-03-03 23:37
#35284 #35284
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ok, dann wollen wirs mal anpacken.

Ich hab ne Tabelle:

name, geschlecht, gewicht

Jetzt möchte ich Männer UND Frauen ausgeben. ABER Frauen nur, wenn gewicht > 35

Habs schon mit AS und IF probiert, aber leider kann ich ein AS nicht hinter die WHERE-Klausel übernehmen.
Hat jemand eine idee?

brauche hier unbedingt Hilfe. Stehe schon wieder kurz vorm Psychokollaps. Habe in meinem Frust sogar mein Meerschweinchen Peter, vergessen zu füttern.\n\n

<!--EDIT|Froschpopo|1172957972-->
Relais
 2007-03-04 09:26
#35285 #35285
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das geht in Kürze wegen des Antidiskriminierungsgesetzes dann nicht mehr...

[sql]WHERE xy = 1 OR gewicht > 35[/sql]
davon Ausgehend, dass alle nicht-Männer in Deinem Modell Frauen sind. Sonst vielleicht so:

[sql]WHERE xx = 0 OR ( xx = 1 AND gewicht > 35 )[/sql]

...und wegen des Meerschweinchens gibt es Ärger mit den Tierschützern.
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
Froschpopo
 2007-03-04 10:20
#35286 #35286
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Relais mein treuer Gefährte :-)

Das ist ja schon nicht schlecht.

Aber was ist nun, wenn geschlecht unbekannt ist, z.B. weil es in einer Variable steht?

Bsp:
Code: (dl )
SELECT name, geschlecht FROM users WHERE IF($geschlecht = 'w', 'gewicht > 35', '')

sowas in der Art schwebte mir bisher vor !\n\n

<!--EDIT|Froschpopo|1172996597-->
Relais
 2007-03-04 11:57
#35287 #35287
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du kannst in SQL auch [sql]WHERE 1 = 1[/sql] prüfen, also auch [sql]WHERE $xy = 1[/sql]
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
GwenDragon
 2007-03-04 12:08
#35288 #35288
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
[quote=Froschpopo,03.03.2007, 22:37]ABER Frauen nur, wenn gewicht > 35[/quote]
Oha, seit wann ist das ein Gewicht von Frauen? Eher von kleinen Mädchen.

War wohl nur eins deiner Späße, gell?
Froschpopo
 2007-03-04 12:16
#35289 #35289
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
versteh jetzt nicht was das mit mir zu tun hat. Was ist denn $xy ?
Das Statement wird über ein Template eingelesen. Ich kann nur die Variable $geschlecht an das Template übergeben. Das liegt nicht zuletzt daran, dass das Template von mehreren Programmen aus genutzt wird, also auch von C++ als wie auch vom Javaserver.
Ich kann deshalb nur $geschlecht an das Statement übergeben.

weiteres Beispiel:

wenn ich $geschlecht an das Statement übergebe, dann muss das Statement irgendwie feststellen, ob $geschlecht männlich oder weiblich ist, und bei letzterem dann "gewicht > 35" machen.

Ich habe allerdings im Thema vergessen zu erwähnen, dass das gesuchte geschlecht immer m oder w ist, niemals aber beides!
Das Problem ist, dass das Statement das nicht weiss. Das Statement bekommt nur das gesuchte Geschlecht als Parameter.

Das muss irgendwie so funktionieren:
Code: (dl )
WHERE IF($geschlecht = 'w', 'gewicht > 35', '')


@gwen: Klar, das ganze ist ein imaginäres Problem. Ich versuche so anhand eines Szenarios zu beschreiben, was ich gerne wissen möchte. Das Szenario besagt, dass ich, wenn das gesuchte Geschlecht w ist, keine Magermodels erwünscht sind. Ziel ist es, mit nur einer Variablen auszukommen die das Geschlecht beschreibt und nichts weiter.\n\n

<!--EDIT|Froschpopo|1173003718-->
jan
 2007-03-04 13:12
#35290 #35290
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
WHERE ((geschlecht = 'w' AND gewicht > 35) OR geschlecht = 'm') AND geschlecht = $geschlecht

?
GwenDragon
 2007-03-04 13:15
#35291 #35291
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Muss doch mal nachfragen.
Wer setzt jetzt den Text $geschlecht in den SQL-String ein?
Sowohl C als auch Java können doch den Inhalt einer Variablen in eine Zeichenkette ausgeben.
Froschpopo
 2007-03-04 14:18
#35292 #35292
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
[quote=GwenDragon,04.03.2007, 12:15]Muss doch mal nachfragen.
Wer setzt jetzt den Text $geschlecht in den SQL-String ein?
Sowohl C als auch Java können doch den Inhalt einer Variablen in eine Zeichenkette ausgeben.[/quote]
Die Statements werden in einer neutralen Textdatei gespeichert und als Template eingelesen. In dieser Textdatei befindet sich dann ein Platzhalter:

WHERE geschlecht = '%%geschlecht%%'

so sieht das aus.
Jetzt wirst du natürlich gleich fragen, warum ich nicht einfach das hier machen:

WHERE %%geschlecht%%
und dem template dann einfach "geschlecht = 'w'" übergebe.
Ganz einfach, dann kommen die anderen Programme mit dem Template nichtmehr zurecht.
Deshalb kann ich noch nichtmal den name des Platzhalters ändern.\n\n

<!--EDIT|Froschpopo|1173010857-->
Froschpopo
 2007-03-04 14:41
#35293 #35293
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
[quote=jan,04.03.2007, 12:12]
Code: (dl )
WHERE ((geschlecht = 'w' AND gewicht > 35) OR geschlecht = 'm') AND geschlecht = $geschlecht

?[/quote]
Jan mein treuer Gefährte, ich wusste genau dass du irgendwann kommst und es mir sagst! Vielen Dank!
Und ein herzlichen Danke auch an die anderen Helfer!
<< >> 10 Einträge, 1 Seite



View all threads created 2007-03-03 23:37.