thx feadur,
Mit dem Typ-Namen werde ich Probleme kriegen, weil das ja kein eindeutiger Schlüssel des Objekts ist, oder?
Meine Lösung wäre bis jetzt Bis jetzt, bei jedem PostBack mit A alle Bs durchlaufen und als neues _a setzen
Habe die Ehre!
Mal ne hypothetische Frage:
Ich hab ein WebControl A und beliebig viele Objekte B. Von B referenziert ein _a auf A. Und um genau dieses _a geht es, denn wenn ich die _B_s in der Session speichere, wird das _A _hinter dem _B.a (jedes mal) komplett mit in der Session gespeichert. Is zwar klar, aber will ich nicht.
Nachtrag:
Mir geht es darum, dass bei einem PostBack ein neues Objekt des WebControls A erstellt wird und das B._a auf eine alte, unrelevante Version von A zeigt.
Kann man das irgendwie umgehen?
Irgend einen Tipp/Trick?
thx
boco25: Mit CASE kan man afaik nur die Daten an sich verändern, aber nicht aussortieren.
danke vbprogger!
so gehts!
Dass *= solche Probleme macht!?! Der Join an sich wird ja richtig durchgeführt...Komisch.
Weißt du auch wieso sich das Verhalten von *= auch außerhalb des inline views, also im äußeren select fortführt?
Der *= Operator Funktioniert schon, und dass ich einen outer und keinen inner Join verwende ist Absicht. Das von mir gepostete Statement ist sozusagen nur die "halbe Wahrheit". Der Select wäre noch etwas komplexer geworden, da der Select in einem Such-Dialog eingetzt wird z.B. (trans.TRANS_Text like @transText or @transText = null) usw. Aber haben wir jetzt anders gelöst, indem wir die Abfrage in mehrere Selects aufgesplittet haben. Ist performanter.
Aber rein Interessenhalber... ich verstehs trotzdem nicht:
SELECT * from (
SELECT asst.ASST_Ref a,
asst.ASST_Type b,
asst.ASST_TRANS_Desc c,
asst.ASST_State d,
trans.TRANS_Ref,
trans.TRANS_Text e,
ISNULL(TRANS_Text, 'abcdefg') f
FROM MM_TRANSLATION trans,
MM_ASSET_TYPE asst
WHERE
trans.TRANS_Text like '%'
AND trans.LANG_Ref = 1
AND asst.COM_Ref = 1
AND asst.ASST_TRANS_Desc *= trans.TRANS_Ref
) tbla
where e is not like null
oder auch
SELECT * from(
....
) tbla
where f != 'abcdefg'
bringt mir auch die Datensätze mit TRANS_Text = null zurück. Ein Join auf ein ASSET_TYPE-Feld z.B. ASST_Type funktioniert, aber auf betroffene Felder des outer Joins wird ein Equi-Join ignoriert. Könnte ich verstehen, wenns beim inneren Select Probleme gäbe, aber beim äußeren?? Dem letzteren sollte es doch eigentlich völlig egal sein, was im Inneren genau vorgeht, ob outer Join oder nicht. Er bekommt ein Result Set welches eigentlich einem temporärem Table gleich kommen sollte, mit welchem es übrigens auch funktioniert!
Ich hab mir einige Meinungen von Leuten die sich mit Datenbanken, meist leider nur ORACLE, auskennen eingeholt. Die waren fest der Überzeugung, dass das Statement, so wie gepostet, richtig funktionieren sollte. Da sollte doch kein Unterschied zwischen Microsoft und Oracle sein, ist doch nix spezielles, sondern rein SQL, oder nicht?
Würde mich echt interessieren was da vorgeht. Wenn da wer was weiß, würds mich freuen von ihm zu hören!
Original von svenson
Sollte hier nicht ein INNER JOIN anstelle des Cross Joins verwendet werden?
Sry, mein Sqlisch is nicht das beste... aber ich mach doch hier nen left outer join, oder nicht?
AND asst.ASST_TRANS_Desc *= trans.TRANS_Ref
Original von vbprogger
Original von svenson
Es funzt nicht, weil die Abfrage überhaupt kein Join ist, ich sehe zumindest weit und breit kein JOIN.
doch das ist cross join@bayeror, sorry wegen not is null, du hast recht.
IMHO darf man Alias nicht in Where verwenden, daher funz das nicht.
... AND trans.TRANS_Text is not null sollte helfen
kein problem 🙂
Alias geht schon in der Where-Klausel. Wenn ich deine Version versuche, komm ich auch zum gleichen Ergebnis...
Danke für die Antwort, aber is not null is schon richtig
Hallo!
Ich möcht gern bei einem Select ein left gejointes feld mit is not null abfragen.
also:
SELECT asst.ASST_Ref a,
asst.ASST_Type b,
asst.ASST_TRANS_Desc c,
asst.ASST_State d,
trans.TRANS_Ref,
[B]trans.TRANS_Text e,[/B]
ISNULL(TRANS_Text, '?') f
FROM MM_TRANSLATION trans,
MM_ASSET_TYPE asst
WHERE
trans.TRANS_Text like '%'
AND trans.LANG_Ref = 1
AND asst.COM_Ref = 1
[B]AND asst.ASST_TRANS_Desc *= trans.TRANS_Ref[/B]
[B]AND e is not null[/B]
Ausgabe sieht so aus:
a b c d TRANS_Ref e f
----------- ------- ----------- ----------- ----------- ------------------- --------------------
93 GC 1 10 1 Schwerkraftbahn Schwerkraftbahn
94 LD -1 10 NULL NULL ?
95 LT -1 10 NULL NULL ?
96 CC -1 10 NULL NULL ?
97 TC -1 10 NULL NULL ?
98 VC -1 10 NULL NULL ?
99 RC -1 10 NULL NULL
Die NULLs werden also nicht ausgemustert! Eigentlich sollte nur der erste Datensatz angezeigt werden. Ein Join auf "f" also "f != '?' " wird mir ignoriert.
Ich habs auch schon versucht diesen Select als Subselect zu machen also:
select * from(
select....(siehe oben)
) tbla
where tbla.f is not null
Dies zeigte aber auch keine Wirkung...
Ich hab schon ein paar Leute gefragt, die mir das erst nicht glauben wollten, und als sie es sahen dann ratlos waren. Mein Kopf raucht... weiß echt nicht mehr weiter!
Ich hoffe mir kann von euch jemand helfen!
Danke schon mal!
Achja, noch ne kleine Bemerkung:
Zu evtl. kommenden Fragen, wie z.B. "warum machst du einen left-Join und streichst die so dazugewonnenen Daten mit 'is not null' wieder raus?" möchte ich gleich sagen (und bitte nicht in den falschen Hals kriegen):
Der Select is sonst OK. Mir geht es rein um das "is not null"!
Tag!
Kann mir wer nen Tip geben, wie man eine tr verschiebt oder kopiert?
Ich hab zwei tables. Von table1 will ich die letzte zeile im table2 haben, mit allen Unterelementen.
Normalerweise würde ich sagen:
table2.rows[0] = table1.rows[table1.rows.length-1];
War aber nix. (table2.rows[0] existiert bereits)