Monty Burns: GROUP BY?!

hi
hab ein problem
das ergebniss meines selects sieht so aus:
+-------+------------------------------------------------------+
| name | IF(messe.ind_messe = rel_messe_hotel.ind_messe, 1,0) |
+-------+------------------------------------------------------+
| test1 | 0 |
| test1 | 0 |
| test1 | 1 |
| test2 | 0 |
| test2 | 0 |
| test2 | 0 |
| test3 | 1 |
| test3 | 0 |
| test3 | 0 |
| test4 | 0 |
| test4 | 0 |
| test4 | 0 |
| test5 | 0 |
| test5 | 1 |
| test5 | 0 |
+-------+------------------------------------------------------+

jetzt wird sich jeder denken können das es nciht leicht ist mit sowas zu arbeiten
wenn ich allerdeings GROUP BY name mache dann sieht es so aus

+-------+------------------------------------------------------+
| name | IF(messe.ind_messe = rel_messe_hotel.ind_messe, 1,0) |
+-------+------------------------------------------------------+
| test1 | 1 |
| test2 | 0 |
| test3 | 0 |
| test4 | 0 |
| test5 | 0 |
+-------+------------------------------------------------------+

das problem an diesem ergebniss ist das die einsen und nullen (in der spalte "IF(messe.ind_messe = rel_messe_hotel.ind_messe, 1,0)") scheinbar zufällig übernommen werden
ich möchte aber das die 1 ,wenn denn eine bei der oberen ergenisstablle steht, auch unten steht

kann da jemand nen tipp geben?

Monty Burns

P.S.:
das sql-statement:

SELECT
messe.ind_messe,
messe.name,
IF(messe.ind_messe = rel_messe_hotel.ind_messe, 1,0) AS selected
FROM
messe,
rel_messe_hotel
WHERE
rel_messe_hotel.ind_hotel = 9
#GROUP BY
#messe.ind_messe
;

  1. SELECT
    messe.ind_messe,
    messe.name,
    IF(messe.ind_messe = rel_messe_hotel.ind_messe, 1,0) AS selected
    FROM
    messe,
    rel_messe_hotel
    WHERE
    rel_messe_hotel.ind_hotel = 9
    #GROUP BY
    #messe.ind_messe
    ;

    quick&dirty, ohne Gewähr:

    ersetze
    IF(messe.ind_messe = rel_messe_hotel.ind_messe, 1,0) AS selected

    durch
    MAX(IF(messe.ind_messe = rel_messe_hotel.ind_messe, 1,0))) AS selected

    dann müßten eigtl. das Maximum über die gruppierten Felder gebildet werden. Wenn also in einem der Felder eine eins ist, wird dies auch zurückgegeben.

    1. danke funtzt
      und so dirty ist das auch wieder nicht *g*

      gruss und dank

      Monty Burns

  2. Hallo, Mr. Burns!

    jetzt wird sich jeder denken können das es nciht leicht ist mit sowas zu arbeiten
    wenn ich allerdeings GROUP BY name mache dann sieht es so aus

    +-------+------------------------------------------------------+
    | name | IF(messe.ind_messe = rel_messe_hotel.ind_messe, 1,0) |
    +-------+------------------------------------------------------+
    | test1 | 1 |
    | test2 | 0 |
    | test3 | 0 |
    | test4 | 0 |
    | test5 | 0 |
    +-------+------------------------------------------------------+

    das problem an diesem ergebniss ist das die einsen und nullen (in der spalte "IF(messe.ind_messe = rel_messe_hotel.ind_messe, 1,0)") scheinbar zufällig übernommen werden
    ich möchte aber das die 1 ,wenn denn eine bei der oberen ergenisstablle steht, auch unten steht

    P.S.:
    das sql-statement:

    SELECT
    messe.ind_messe,
    messe.name,
    IF(messe.ind_messe = rel_messe_hotel.ind_messe, 1,0) AS selected
    FROM
    messe,
    rel_messe_hotel
    WHERE
    rel_messe_hotel.ind_hotel = 9
    #GROUP BY
    #messe.ind_messe
    ;

    SELECT messe.ind_messe,
              messe.name,
             IF(messe.ind_messe = rel_messe_hotel.ind_messe, 1,0) AS selected
       FROM messe, rel_messe_hotel
       WHERE rel_messe_hotel.ind_hotel = 9
       GROUP BY messe.name, messe.selected;

    Siehe hierzu: http://dev.mysql.com/doc/mysql/de/Counting_rows.html

    Tingeltangel Bob!