2012-03-24 3 views
0

Ich benutze MySQL mit Vb.Net 2010 und Crystal Reports und um ehrlich zu sein, ich bin ein komplettes noob, wenn es um Sql Abfragen kommt. Das Problem ist, ich möchte einen Bericht generieren, der die Servicegebühr von einer Transaktion zeigt, die eine Person gemacht hat, während sie auch die gekauften Artikel und ihre Menge und Preise, im Grunde eine Rechnung, zeigt. Ich habe einen Befehl von der Datenquelle I in Crystal Reports erstellt und enthält folgende Abfrage:Benötigen Sie Hilfe bei der Verwendung der SQL-Abfrage in Crystal Reports auf Vb.NET 2010

SELECT t.transaction_code,t.fee,t.service_type,t.date_sched,total_bill, s.item_code, s.quantity_sold, i.item_description, i.price, CONCAT(p.fname,' ',p.mi,' ',p.lname),p.address FROM tbl_transaction AS t, tbl_sale AS s, tbl_item AS i, tbl_profile as p WHERE t.transaction_code = '{?trans_code}' AND s.transaction_code = t.transaction_code AND i.item_code = s.item_code AND p.id='{?p_id}'

Es funktioniert alles in Ordnung, wenn ich, dass der Bericht alles wie dem Personennamen zeigt, Transaktionscode, Service Typ und seine Gebühr sowie alle gekauften Artikel und die gesamte Rechnung. Das Problem ist, wenn die betreffende Person in dieser bestimmten Transaktion nur Dienste benötigt und keine Artikel gekauft hat, wird der Bericht nur leer sein. Was ich möchte, ist, dass der Bericht immer noch in der Lage sein sollte, den Namen, den Transaktionscode, den Servicetyp und die Gebühren usw. der Person anzuzeigen, auch ohne einen Artikel zu kaufen. Ich weiß, es ist schwer zu verstehen und es ist auch schwer für mich zu erklären, aber ich brauche jetzt wirklich Hilfe.

Da kann ich Bilder noch nicht posten, da ich ein neuer Benutzer bin. Ich werde schreiben Sie einfach einen Link, wo ich die Strukturen meiner Tabellen hochgeladen:

http://oi42.tinypic.com/xogw9k.jpg

Ich habe auch eine Tabelle mit dem Namen link_profile_transaction, die tut, was sie sagt, und eine andere Tabelle für die Dienstleistungen, die auf die Dienste verbunden ist, und Gebühr von der Transaktionstabelle (tbl_transaction), obwohl es nicht in der Abfrage enthalten ist. http://oi41.tinypic.com/fqm2b.jpg

Die Links sind echt und sicher.

Antwort

2

Sie müssen die Elementtabelle der Servicetabelle beitreten.

Nicht wirklich sicher über das Schema Ihrer Tabelle, ich unten zur Verfügung stellen für Sie zu bearbeiten, wenn es nicht so wie es ist funktioniert.

SELECT t.transaction_code,t.fee,t.service_type,… s.item_code, s.quantity_sold, 
i.item_description, i.price, CONCAT(p.fname,' ',p.mi,' ',p.lname),p.address 

FROM tbl_transaction AS t, tbl_sale AS s, tbl_profile as p 
LEFT JOIN tbl_item AS i ON i.item_code = s.item_code 
WHERE t.transaction_code = '{?trans_code}' 
AND s.transaction_code = t.transaction_code AND 
p.id='{?p_id}' 
+0

Ummmm, wie gesagt, ich bin immer noch ein bisschen neu bei der Verwendung von SQL-Abfragen. Können Sie mir ein Beispiel für die Verwendung der JOIN-Funktion geben? Vielleicht können Sie einfach die Abfrage verwenden, die ich mit meiner Frage eingegeben habe, um den JOIN-Befehl zu integrieren? – user1290068

+0

tat ich. Probier einfach den Code, den ich dir gegeben habe. – kasavbere

+0

Hmmm. Ich werde versuchen, was du gesagt hast. Ich frage nur noch einmal, ob ich es immer noch nicht verstehe. – user1290068