Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2007 Teil von März

SELFHTML Forumsarchiv
MySQL: Anzahl Felder in eriner Zeile ermitteln

Informationsseite
  1. Seite (DATENBANK) MySQL: Anzahl Felder in eriner Zeile ermitteln von Kalle_B, 31. 03. 2007, 11:26
nach unten

MySQL: Anzahl Felder in eriner Zeile ermitteln

Die folgende Nachricht zum Thema stammt von: Kalle_B, 31. 03. 2007, 11:26

Hallöle,

durch LEFT JOIN ermittle ich in einer Zeile sechs Informationen. Davon können 2..5 NULL sein.

Da ich die Zeile mit den meisten Informationen per ORDER BY ... DESC zuerst brauche, habe ich versucht, die Anzahl in einer eigenen Spalte zu ermitteln:

,count(info1,info2,info3,info4,info5,info6)

Das mag SQL aber gar nicht. Wie bekomme ich es hin, dass die meisten Treffer oben stehen in der Liste?

Hier das Original, erstmal bis info3:

SELECT
 6 slot_nr
,kon1.aussteller_id      chef_id
,1536  aus2_id
,kon1.gruppen_id         gruppen_id
,count(kon1.besucher_id,kon2.besucher_id,kon3.besucher_id) anz_grp

,kon1.besucher_id        Abes_id
,kon1.prio_1             Aprio_1
,kon1.prio_2             Aprio_2
,anw1.slot_nr            Aanw_slot
,anw1.partner_id         Aanw_par
,anw1.event_id           Aanw_evt

,kon2.besucher_id        Bbes_id
,kon3.besucher_id        Cbes_id

FROM      tm_kontakte    as kon1

LEFT JOIN tm_anwesenheit as anw1
ON        anw1.adr_id =kon1.besucher_id
AND       anw1.slot_nr=6

LEFT JOIN tm_kontakte    as kon2
ON        kon2.aussteller_id = kon1.aussteller_id
AND       kon2.besucher_id  != kon1.besucher_id
AND       kon2.gruppen_id    > 0
AND       kon2.gruppen_id    = kon1.gruppen_id

LEFT JOIN tm_kontakte    as kon3
ON        kon3.aussteller_id = kon1.aussteller_id
AND       kon3.besucher_id  != kon1.besucher_id
AND       kon3.besucher_id  != kon2.besucher_id
AND       kon3.gruppen_id    > 0
AND       kon3.gruppen_id    = kon1.gruppen_id

WHERE     kon1.aussteller_id = 1536
AND       kon1.slot_nr = 0
ORDER BY  chef_id


Lieben Gruß, Kalle

nach obennach unten

MySQL: Anzahl Felder in eriner Zeile ermitteln

Die folgende Nachricht zum Thema stammt von: Ilja, 31. 03. 2007, 12:50

yo,

deine abfrage ist schwer zu lesen, da du in der ON klausel der Joins nicht nur die join bedingung geschrieben hast, sondern auch noch andere einschränkungen mit unterbringst. ich würde das voneinander trennen.

was deine sortierung angeht, so ist count an der stelle kein so guter ansatz. benutze dafür funktionen, die dir den wert 0 zurückliefern, wenn der wert NULL ist, ansonsten 1 und addiere dann die 6 info felder auf.

beispiel IF(spalte IS NULL , 0, 1), geht aber auch mit case oder anderen funktionen.

Ilja

nach obennach unten

DANKE

Die folgende Nachricht zum Thema stammt von: Kalle_B, 01. 04. 2007, 08:59

Hallo Ilja,

»» beispiel IF(spalte IS NULL , 0, 1), geht aber auch mit case oder anderen funktionen.

Das kann ich gut gebrauchen, danke.

Kalle

nach obennach unten

MySQL: Anzahl Felder in eriner Zeile ermitteln

Die folgende Nachricht zum Thema stammt von: King^Lully, 31. 03. 2007, 12:52

count(info1,info2,info3,info4,info5,info6)

Kannst Du nicht einfach die Werte addieren?

nach obennach unten

MySQL: Anzahl Felder in eriner Zeile ermitteln

Die folgende Nachricht zum Thema stammt von: Kalle_B, 01. 04. 2007, 07:44

»» Kannst Du nicht einfach die Werte addieren?

Leider nein, wenn einer NULL ist, ist das ganze Ergebnis NULL

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2007 Teil von März

© 1998-2006 Seite Impressum, Software: Classic Forum