GROUP BY?!
Monty Burns
- datenbank
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
;
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.
danke funtzt
und so dirty ist das auch wieder nicht *g*
gruss und dank
Monty Burns
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 stehtP.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!