ThomasX: Beste Lösung für diese Abfrage

Hallo,
ich habe ein kleines Problem:

ich habe eine Tabelle

Typ - 1 - 2 - 3 - 4 - 5
A   - X -   -   - X -
B   -   - X -   -   -
...

Jetzt möchte alle Nummern auflisten, wo Typ $typ ein "X" stehen hat. Ich habe lange darüber nachgedacht, wie das am einfachsten gehen könnte, mir fällt jedoch nichts sinnvolles ein. Vielleicht könnt ihr mir ja helfen

Danke im Voraus
Thomas

  1. Nachtrag:

    bei der Tabelle handelt es sich um MySQL, kein Textdokument

  2. Hoi,

    [...]

    Jetzt möchte alle Nummern auflisten, wo Typ $typ ein "X" stehen hat.

    Wenn du mit 'wo Typ $typ ein "X" stehen hat' meinst, du moechtest alle
    Datensaetze, wo in der Spalte '$typ' (wobei '$typ' variabel ist) ein
    X steht, dann geht das doch relativ einfach:

    mysql_query("SELECT feld FROM tabelle WHERE $typ = 'X'");

    Vorher wuerde ich allerdings '$typ' validieren, etwa so:

    $columnames = Array("col1","col2","col3","col4");
    if(in_array($columnames,$typ)) {
      mysql_query(...);
    }

    Gruesse,
     CK

  3. Hallo!

    Christian hat Dir ja schon eine Antwort gegeben.

    Typ - 1 - 2 - 3 - 4 - 5
    A   - X -   -   - X -
    B   -   - X -   -   -
    ...

    Du hast grundsätzlich die Tabelle falsch aufgebaut. So kannst Du viel einfacher Abfragenm gestalten.

    Nr  Typ
    1    A
    2    B
    4    A

    SELECT Nr, Type FROM tabelle;
    SELECT Nr, Type FROM tabelle WHERE Typ='A';
    SELECT Nr, Type FROM tabelle WHERE Nr=1;

    usw.

    MfG, André Laugks

    1. ich glaube das ist wohl die beste Lösung

      Herzlichen Dank (natürlich auch an alle anderen, die versuchten mir zu helfen)

  4. Hallo Thomas,

    Typ - 1 - 2 - 3 - 4 - 5
    A   - X -   -   - X -
    B   -   - X -   -   -
    ...

    Jetzt möchte alle Nummern auflisten, wo Typ $typ ein "X" stehen hat. Ich habe lange darüber nachgedacht, wie das am einfachsten gehen könnte, mir fällt jedoch nichts sinnvolles ein. Vielleicht könnt ihr mir ja helfen

    "select CONCAT(IF(typ1='X', '1,', ''), IF(typ2='X', '2,', '')), IF(typ3='X', '3,', '')) as alltypes from typtabelle where typ=A"
    würde Dir eine eine Liste mit allen Nummern, getrennt durch "," zurückgeben, der select hier allerdings nur für die ersten drei Zahlen (der Übersicht wegen, wie es für fünf funktiniert, ist daraus ja wohl klar), typ1 usw. wären Deine Feldnamen.

    Allerdings habe ich die Vermutung, daß Deine DB-Struktur nicht optimal ist, wenn Du mit Typ1-5 irgendwelche Eigenschaften bezeichnen willst, solltest Du entweder mit dem Feldtyp "SET" arbeiten, oder mit einer Detailtabelle.

    Viele Grüße
    Stephan