![]() |
| | LinkBack | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Erfahrener Benutzer Registriert seit: 16.08.2008 Ort: Mecklenburg-Vorpommern
Beiträge: 314
|
Hallo liebe Entwicklergemeinde, ich habe vor ein paar Tagen in der MySQL-Dokumentation (http://dev.mysql.com/doc/refman/5.1/...functions.html) eine if-Bedingung entdeckt, komme aber mit dieser nicht so wirklich zurecht. Ein Beispiel aus der Doku: Code: mysql> SELECT CASE 1 WHEN 1 THEN 'one'
-> WHEN 2 THEN 'two' ELSE 'more' END;
-> 'one'
Code: SELECT CASE einStringAusEinemFormular WHEN derInhaltDerSpalte:Name THEN SELECT 'Name' FROM 'table1' ELSE 'FALSE' END; Ich weiß, dass ich DAS auch via LIKE matchen könnte, doch gehts mir hier einfach nur ums Prinzip ;) Ich könnte schließlich auch "einStringAusEinemFormular" und "derInhaltDerSpalte:Name" vorher mit einer Funktion bearbeiten. Wie realisiere ich das? Und wie sage ich MySQL das es den Namen der aktuellen Datenzeile und nicht ALLE Namen selektieren soll? Schade, dass nicht wie im PHP-Manual jedes Argument einzeln erklärt wird - das würde das Verständnis beschleunigen. Vielen Dank! |
| | |
| | Nach oben #3 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 3.198
|
Was du haben möchtest ist ein Code: if
{
...
}
else
{
...
}
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #5 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.365
|
Ich denke das Problem ist, dass dich niemand verstanden hat. Ich hab's definitiv nicht. Selbst nach mehrmaligem lesen. Keinen Schimmer, was du da vorhast. Gib uns doch mal ein konkretes Beispiel. Sagen wir du hast die Tabelle User: Code: | id | name | email | |---------+--------------------+---------------------| | 1 | pago | foo@bar.de | | 2 | nano | foo@bar.de | | 3 | jago | foo@bar.de | |
| | |
| | Nach oben #6 |
| Erfahrener Benutzer Registriert seit: 16.08.2008 Ort: Mecklenburg-Vorpommern
Beiträge: 314
|
Hallo, danke für die noch späten Zuschriften. Also erstmal: Das was ich ursprünglich wollte war absoluter Quatsch. Was ich eigentlich wollte, sah - schematisch - so aus: PHP-Code: Dadurch erhoffe ich mir eine Performanceeinsparung. Ich habe aber scheinbar fortwährend die falsche Syntax verwendet, bis ich es aufgegeben habe. @PAGO Eine Möglichkeit, nach deinem Beispiel, wäre: Wenn er jago in der Tabelle "user" nicht findet, soll er nicht FALSE ausgeben, sondern eine andere Tabelle durchsuchen bzw. vielleicht auch einfach nur eine andere Spalte. Geändert von Sekundentakt (06.07.2009 um 22:28 Uhr) |
| | |
| | Nach oben #7 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.365
|
Achsoooo. Eventuell könntest du das über Stored Procedures machen, wenn du das wolltest. Da kann ich dir aber nicht helfen - nie benutzt. ;) |
| | |
| | Nach oben #9 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 3.198
|
ich habe sowas zB in einem ORDER BY: Code: ...
ORDER BY
`spalte1` ASC,
`spalte2` ASC,
IF(`spalte3` = 'string', `spalte4', 'spalte5`)
...
Meinst du sowas?
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! Geändert von Jann Hendrik (07.07.2009 um 22:07 Uhr) |
| | |
| | Nach oben #10 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.365
|
IF in MySQL ist einfach nur eine Funktion. Am besten vergleichbar vielleicht mit dem Ternary-Operator. Oder, falls dir der nix sagt, mit folgender Funktion: PHP-Code: Punkt ist: IF in MySQL ist eine Funktion und kein "Statement". Ungetestetes Beispiel (von jemandem, der das - glaube ich - einmal überhaupt benutzt hat...): Code: SELECT IF(u.name = 'pago', TRUE, FALSE) as is_me, u.id FROM users u Eventuell könnte man ein Sub-Select als Expression verwenden... müsste man mal ausprobieren. Dann könnte dein Beispiel vllt. doch hinhauen. |
| | |
| | Nach oben #11 |
| Erfahrener Benutzer Registriert seit: 16.08.2008 Ort: Mecklenburg-Vorpommern
Beiträge: 314
|
@Jann-Hendrik: Ja, das könnte zumindest schon mal helfen. Gilt dein Beispiel nur für die Zeile die "string" enthält, oder für alle Zeilen, wenn eine von ihnen "string" enthält? Gibt es so etwas auch ohne es auf einen bestimmten Wert zu beschränken? Also im Sinne von: Wenn die zurückgelieferte Ergebnissmenge kleiner als X ist, dann nehme einen anderen Wert? SELECT Name FROM IF(mysql_affected_rows > 10, user, special_user) WHERE name = 'pago' Das ist nur ein sinngemäßes Beispiel. Das mysql_affected_rows bezieht sich auf die PHP-Funktion und dient der illustration von dem, was ich mir exakt wünsche. @ pago Wie siehts mit dem Case-Statement aus? |
| | |
| | Nach oben #12 | |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 3.198
| Zitat:
Ich denke aber, dass sich die Syntax auch auf andere Fälle erweitern lassen kann. Ob sie sub-queries kann? Das weiß ich nicht. Das hängt aber auch davon ab, welche mysql-Version du verwendest!!!
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! | |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| MySQL RegExp nächste Zeile | Sekundentakt | Datenbanken | 1 | 07.03.2009 15:45 |
| Wieviel ist mysql wert? | Jann Hendrik | Nachrichten | 8 | 19.01.2008 02:25 |
| MySQL Abfrage Bedingung | julien | Datenbanken | 4 | 06.08.2006 00:44 |
| ssh tunnel zu einer mysql datenbank | beny_mcde | Datenbanken | 4 | 07.06.2006 16:05 |
| MySQL 5.1 kommt in die Beta-Phase | Ben | Nachrichten | 1 | 02.03.2006 14:31 |