php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > ASP, PERL, CGI, C und alles andere
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


ASP, PERL, CGI, C und alles andere Wolle ma net so sein. Obwohl Perl, ASP, C und TCL zu den minderwertigen Internet-Skriptsprachen zählen, dürfen ab sofort hierzu auch Fragen gestellt werden. ;)

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 3 Stimmen, 3,67 durchschnittlich.
  #1 (permalink)  
Alt 21-09-2006, 12:04
jaqu
 Newbie
Links : Onlinestatus : jaqu ist offline
Registriert seit: Aug 2006
Beiträge: 8
jaqu ist zur Zeit noch ein unbeschriebenes Blatt
Standard [MSSQL] Frage zu CASE iSNULL

Hallo,

ich habe eine Abfrage, in der ich mir in einer extra Spalte anzeige, ob Tabelle 1 einen Fremdschlüssel in Tabelle 2 hat. Das wird über case isnull gelöst.

Ich will mir aber nur von bestimmten Werten anschauen, ob ein Fremdschlüssel existiert. Wie müsste ich denn meine Abfrage abändern. Anbei mal die aktuelle:

CASE ISNULL(Tab2.IDTab1, '') WHEN '' THEN 0 ELSE 1 END AS fs_exists

Tabelle 1
IDTab1|Name
100000|name1

Tabelle 2
IDTab2|ID_X|IDTab1
500000|1111|100000
600000|2222|100000

Mein Versuch hier. bringt einfach zu viele Datensätze zurück:

select [...],
CASE WHEN Tab2.ID_X = 1111 THEN CASE ISNULL(Tab2.IDTab1, '') WHEN '' THEN 0 ELSE 1 END ELSE 0 END AS fs_exists
FROM [...]

Geändert von jaqu (21-09-2006 um 13:32 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 21-09-2006, 12:54
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

versuch mal
PHP-Code:
select t1.IDTab1t1.[name], case  when t2.IDTab1 IS NULL then 0 else 1 end fs_exists
from tabelle1 t1 left join tabelle2 t2 on t1
.IDTab1 t2.IDTab1 
Mit Zitat antworten
  #3 (permalink)  
Alt 21-09-2006, 13:42
jaqu
 Newbie
Links : Onlinestatus : jaqu ist offline
Registriert seit: Aug 2006
Beiträge: 8
jaqu ist zur Zeit noch ein unbeschriebenes Blatt
Question

Hi,

ich musste noch was im Beitrag ändern. Ich habe leider vergessen, die TabellenNAmen auf mein gewähltest Beispiel abzuändern. Sorry!!!

Deine Abfrage funktioniert soweit. Die erste Abfrage in meinem Posting ist das gleiche nur mit anderen Worten.

Wie kann ich aber jetzt noch sagen, dass nur für bestimmte ID_X geprüft wird, ob eine FS-Beziehung besteht? Das ist genau der knackpunkt. Ich dachte, ob ich dass vielleicht in einer UnterSelectAbfrage bringe, aber da kommen immer Fehler.
Mit Zitat antworten
  #4 (permalink)  
Alt 21-09-2006, 13:58
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von jaqu


Wie kann ich aber jetzt noch sagen, dass nur für bestimmte ID_X geprüft wird, ob eine FS-Beziehung besteht? Das ist genau der knackpunkt. Ich dachte, ob ich dass vielleicht in einer UnterSelectAbfrage bringe, aber da kommen immer Fehler.
where t2.ID_X = 1111
Mit Zitat antworten
  #5 (permalink)  
Alt 21-09-2006, 14:21
jaqu
 Newbie
Links : Onlinestatus : jaqu ist offline
Registriert seit: Aug 2006
Beiträge: 8
jaqu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

>>where t2.ID_X = 1111

hatte ich auch gedacht, aber leider fehlanzeige! Das zeigt mir dann nur die an, wo ID_X=1111 und ich kann mir die CASE sparen. Ich will ja wissen, ob FS exisitieren und falls ja, kommt eine 1, falls nein, eine 0. Hier nochmal das Beispiel von oben modifiziert. Ich will alle Daten aus Tab1, und in eine extra Spalte, ob für IDTab1 im Tab2 eine FSBeziehung gibt, aber nur für die ID_X1111.

Tabelle 1
IDTab1|Name
100000|name1
200000|name2
300000|name3


Tabelle 2
IDTab2|ID_X|IDTab1
500000|1111|100000
600000|2222|100000
700000|1111|300000

Als Ausgabe stelle ich mir sowas vor

IDTab1|Name |fs_exists
100000|name1|1
200000|name2|0
300000|name3|1

Das mit Where, würde mir glattweg die IDTab1=200000 nicht mit anzeigen.
Mit Zitat antworten
  #6 (permalink)  
Alt 21-09-2006, 14:39
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Na, dann sag's doch genauer
PHP-Code:
select t1.IDTab1t1.[name], case  when t2.IDTab1 IS NULL then 0 else 1 end fs_exists
from tabelle1 t1 left join tabelle2 t2 on t1
.IDTab1 t2.IDTab1 and t2.ID_X=1111 
Mit Zitat antworten
  #7 (permalink)  
Alt 21-09-2006, 15:22
jaqu
 Newbie
Links : Onlinestatus : jaqu ist offline
Registriert seit: Aug 2006
Beiträge: 8
jaqu ist zur Zeit noch ein unbeschriebenes Blatt
Smile

Hi,

danke dir! es funktioniert jetzt! Ich habe das zwar auch schon mehrfach benutzt, aber darauf wäre ich wahrscheinlich so schnell nicht gekommen. Ich dächte, man müsste noch ein CASE oder sowas einbauen. Vielen Dank dir!
Mit Zitat antworten
  #8 (permalink)  
Alt 21-09-2006, 21:38
jaqu
 Newbie
Links : Onlinestatus : jaqu ist offline
Registriert seit: Aug 2006
Beiträge: 8
jaqu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

ich bins nochmal.... Das hat zwar alles soweit funktioniert, aber wenns ans Eingemacht geht, schweigen mich die Lämmer an.

Wenn ich die Abfrage nun mir anzeigen lassen will auf einer Website, dann sind da leider keine Daten drin????!!!! Bzw. nur Nullen (sprich "0"). Ich programmiere zwar in .net, aber dass kann doch nicht der Grund sein. *verzweifle*
In der Server Umgebung mit dem QueryBuilder funzt es tadelos. Ist das normal????
Mit Zitat antworten
  #9 (permalink)  
Alt 22-09-2006, 00:26
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hm ... vielleicht etwas code, denn so kann man nicht viel sagen

*verschiebe*
Mit Zitat antworten
  #10 (permalink)  
Alt 22-09-2006, 11:34
jaqu
 Newbie
Links : Onlinestatus : jaqu ist offline
Registriert seit: Aug 2006
Beiträge: 8
jaqu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

naja, ich habe die Abfrage von dir genauso übernommen und die funzt - im Query Builder. alle Daten kommen ja an, nur halt nicht die eine Spalte. Ich probiere mal, wie es ist, wenn ich das vorher in eine Tabelle einlese und dann wieder auslese

Aber hier trotzdem mal:

SqlDataAdapter myDataAdapter_RefPOR = new SqlDataAdapter("SELECT DISTINCT POR_FC.FC_ID, POR_FC.FCName, POR_FC.User_ID,
POR_FC.DateOfCreation, POR_FC.RefPOR_ID, POR_FC.UpdateByUser, POR_FC.privateAccess, POR_FC.inUse,
POR_FC.DateOfUpdate, Comparison.US_ID as US_ID, Comparison.PreUS_ID, Comparison.POR_ID,
Comparison.Process_ID, Comparison.FCRN, Comparison.FCProcessName, Comparison.ProcessFlow, Comparison.Module, Comparison.UnitProcess, Comparison.UPMS, Comparison.NonPOR,

CASE WHEN POR.US_ID IS NULL THEN 0 ELSE 1 END AS SingleSiteRefProcesss

FROM
POR_FC INNER JOIN POR_FC_POR_Comparison AS Comparison ON POR_FC.FC_ID = Comparison.FC_ID LEFT OUTER JOIN POR_FC_Site_POR AS POR ON Comparison.US_ID = POR.US_ID AND POR.POR_ID = " + por_id + "WHERE (Comparison.POR_ID = " + ref_por_id + ") AND (POR_FC.FC_ID = " + fc_id + ") ORDER BY Comparison.ProcessFlow" ,myConn);

DataSet_POR myDataSet = new DataSet_POR();
myConn.Open();
myDataAdapter_RefPOR.Fill(myDataSet,"POR_FC_RefPOR"); //mein DataSet mit der Tabelle
Mit Zitat antworten
  #11 (permalink)  
Alt 22-09-2006, 11:40
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hast du auch schon überprüft, ob

- por_id
- ref_por_id
- fc_id

die richtigen Werte enthalten? Schonmal die Abfrage ausgebenlassen, oder im Debugger mal angeschaut?
Mit Zitat antworten
  #12 (permalink)  
Alt 22-09-2006, 13:50
jaqu
 Newbie
Links : Onlinestatus : jaqu ist offline
Registriert seit: Aug 2006
Beiträge: 8
jaqu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

okay, hat funktioniert. es lag doch tatsächlich an den werten. meine güte, daran denkt man auch nur im geringsten ...... vielenDank!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:06 Uhr.