phpbar.de logo

Mailinglisten-Archive

Werte eines SET Types Abfragen

Werte eines SET Types Abfragen

Alexander Skwar mysql_(at)_lists.phpcenter.de
Sat, 9 Jun 2001 01:19:30 +0200


Moin!

Ich habe folgende Tabelle:

mysql> describe TESTING;
+--------+-------------------------+------+-----+---------+-------+
| Field  | Type                    | Null | Key | Default | Extra |
+--------+-------------------------+------+-----+---------+-------+
| zahl_  | bigint(20)              |      |     | 0       |       |
| text_  | char(255)               |      |     |         |       |
| SetCol | set('Yes','No','Maybe') | YES  |     | NULL    |       |
+--------+-------------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> select * from TESTING;
+-------+-------+--------------+
| zahl_ | text_ | SetCol       |
+-------+-------+--------------+
|    42 | 42    | NULL         |
|     0 |       | Yes,No       |
|     0 |       | Yes          |
|     0 |       | No           |
|     0 |       | Yes,No,Maybe |
+-------+-------+--------------+
5 rows in set (0.00 sec)

Wie man sieht, kann die Spalte 'SetCol' 3 Werte aufnehmen: 'Yes' und/oder
'No' und/oder 'Maybe'.

Wie schreibe ich ein SELECT das genau nur die Zeile auswählt, bei der 'Yes'
und 'No' gesetzt sind?

	SELECT * FROM TESTING WHERE SetCol = 'Yes,No'

Das klappt zwar, aber dafür muß ich wissen in welcher Reihenfolge die Werte
in SetCol definiert wuden, denn:

mysql> select * from TESTING WHERE SetCol = 'No,Yes';
Empty set (0.00 sec)

Auch durch mehrere WHERE Statements bin ich nicht zum Ziel gekommen:

mysql> select * from TESTING WHERE SetCol = 'No' AND SetCol = 'Yes';
Empty set (0.00 sec)

mysql> select * from TESTING WHERE SetCol = 'No' OR SetCol = 'Yes';
+-------+-------+--------+
| zahl_ | text_ | SetCol |
+-------+-------+--------+
|     0 |       | Yes    |
|     0 |       | No     |
+-------+-------+--------+
2 rows in set (0.01 sec)

mysql> select * from TESTING WHERE SetCol LIKE '%No%' OR SetCol like '%Yes%';
+-------+-------+--------------+
| zahl_ | text_ | SetCol       |
+-------+-------+--------------+
|     0 |       | Yes,No       |
|     0 |       | Yes          |
|     0 |       | No           |
|     0 |       | Yes,No,Maybe |
+-------+-------+--------------+
4 rows in set (0.00 sec)

mysql> select * from TESTING WHERE FIND_IN_SET( 'Yes', FIND_IN_SET( 'No', SetCol ) );
Empty set (0.00 sec)

Meine Frage ist nun, was muß ich schreiben wenn ich genau nur die Zeile
auswählen möchte, bei der sowohl 'Yes' als auch 'No' gesetzt sind und ich
nicht weiß in welcher Reihenfolge die Werte definiert wurden?  Da ich das
nicht weiß, kann ich leider auch nicht mit Zahlen arbeiten.  Damit meine
ich:

mysql> select * from TESTING WHERE SetCol = 3;
+-------+-------+--------+
| zahl_ | text_ | SetCol |
+-------+-------+--------+
|     0 |       | Yes,No |
+-------+-------+--------+
1 row in set (0.00 sec)


Danke sehr,

Alexander Skwar
-- 
How to quote:	http://learn.to/quote (german) http://quote.6x.to (english)
Homepage:	http://www.digitalprojects.com   |   http://www.iso-top.de
   iso-top.de - Die günstige Art an Linux Distributionen zu kommen
		Uptime: 18 hours 53 minutes

---
!!NEU!!
Fragen und Antworten zu MySQL und dieser Liste unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive