Forum - Beitrag anzeigen

CF-Basics - Re: Virtuelle Werte mit einer physik. Tabelle verknüpfen

Icon Pfeil Startseite Icon Pfeil Kategorie Icon Pfeil Suche

Icon Forum Beitrag vom 23.10.2014 06:22 (1280 Aufrufe)
Name: cfsandy
Titel: Re: Virtuelle Werte mit einer physik. Tabelle verknüpfen
Inhalt: Um Deinen Fehler zu finden, solltest Du prüfen, ob die Abfrage aus Deinen Tabellen überhaupt die gewünschten Werte zurückgibt. Das gegebene SQL filtert aus 2 Tabellen alle Daten die sowohl in Tabelle1 als auch Tabelle2 dieselbe Kundennummer haben (WHERE tabelle1.kunde = tabelle2.kunde) und, falls in der URL der Artikel übergeben wurde, nur diejenigen Datensätze, in denen auch diese Artikelnummer vorkommt (tabelle1.artikel = url.artikel). Es wird nicht irgendetwas an die andere Tabelle "übergeben", sondern gleichsam eine neue Tabelle aus dieser Schnittmenge erstellt.

SELECT *
FROM tabelle1, tabelle2
WHERE tabelle1.kunde = tabelle2.kunde
AND tabelle1.artikel = #url.artikel#

Das hier ist ein funktionierendes und getestetes Szenario und imitiert genau Deine Vorgaben:

tabelle1 = queryNew("kunde,artikel","varchar,integer");
queryAddRow(tabelle1, 6);
querySetCell(tabelle1, "kunde", "K-001", 1);
querySetCell(tabelle1, "artikel", 1001, 1);
querySetCell(tabelle1, "kunde", "K-001", 2);
querySetCell(tabelle1, "artikel", 1002, 2);
querySetCell(tabelle1, "kunde", "K-001", 3);
querySetCell(tabelle1, "artikel", 1003, 3);
querySetCell(tabelle1, "kunde", "K-002", 4);
querySetCell(tabelle1, "artikel", 1001, 4);
querySetCell(tabelle1, "kunde", "K-003", 5);
querySetCell(tabelle1, "artikel", 1002, 5);
querySetCell(tabelle1, "kunde", "K-003", 6);
querySetCell(tabelle1, "artikel", 1003, 6);

tabelle2 = queryNew("kunde,name,adresse","varchar,varchar,varchar");
queryAddRow(tabelle2, 3);
querySetCell(tabelle2, "kunde", "K-001", 1);
querySetCell(tabelle2, "name", "AAA", 1);
querySetCell(tabelle2, "adresse", "Adresse von AAA", 1);
querySetCell(tabelle2, "kunde", "K-002", 2);
querySetCell(tabelle2, "name", "BBB", 2);
querySetCell(tabelle2, "adresse", "Adresse von BBB", 2);
querySetCell(tabelle2, "kunde", "K-003", 3);
querySetCell(tabelle2, "name", "CCC", 3);
querySetCell(tabelle2, "adresse", "Adresse von CCC", 3);
writeDump(var=tabelle1);
writeDump(var=tabelle2);
param name="url.artikel" default = "";
qry = new Query(tabelle1=tabelle1,tabelle2=tabelle2);
qryString = "SELECT * FROM tabelle1, tabelle2 WHERE tabelle1.kunde = tabelle2.kunde";
if ( val( url.artikel ) ){
qryString = qryString & " AND tabelle1.artikel = ( :artikel )";
}

qry.setDBType( 'query' );
qry.setSQl( qryString );
qry.addParam( name="artikel", value=val(url.artikel), cfsqltype="cf_sql_integer" );
queryResult = qry.execute().getResult();
writeDump(var=queryResult);

Andreas Schuldhaus
ATGInfotech
WEB: www.atginfotech.com
Twitter: @cfexpert



Bitte melden Sie sich kostenlos an, um eine Antwort auf diesen Beitrag zu erstellen.


Das deutsche ColdFusion-Forum cfml.de ist das Portal für Einsteiger und Experten zum Thema ColdFusion und der ColdFusion Markup Language (CFML).

© 2017 Webdesign & Hosting: CHC ONLINE Kassel | SOLVA Content-Management-System CMS
Urlaub-Angebote.de - Urlaub mit Bestpreis-Garantie buchen