Sehr spezielle Abfrage aus 2 Tabellen

Phenitix

Neuer Benutzer
Beiträge
3
Hi,

ich bin gerade dabei eine Auswertung fertig zumachen.

Dabei habe ich 3 Tabellen:

1. ID_Customer und Name
2. Name (Hostname und teile eines Hostnames, da hier auch welcher in einer Domäne stecken) und ID_Customer
3. Datum, ID_Customer und License_Count

Ein zusätzliche Temp Tabelle legt ich mir aus einer CSV an, da stehen auch Hostnames drin.

Jetzt meine Frage:
Wie schaffe ich es aus die 2. DB den Name mit der Temp DB abzugleichen und die ID's der Customer zu Counten.

das ist bisher mein Ansatz

Code:
SELECT Name FROM devices WHERE Name LIKE '%(Select Device from temp)%'

Hier noch eine ERM dazu

ERM.png

Viele Grüße
 

Anhänge

  • ERM.png
    ERM.png
    13,9 KB · Aufrufe: 9
Werbung:
Ich mag nicht solch einen Bilderkram, aber aus deinem Bild geht eigentlich hervor, daß die Counts pro Customer in der Counts-Tabelle stehen. Warum hampelst Du dann (nur) in devices rum?

Hint zur Lösung: JOIN
 
Er vergleicht ja die Device Tabelle mit der Temp Tabelle, hier soll dann die Customer gecounted werden und in die Count Tabelle geschrieben werden.
 
parse error. Deine Erklärungen sind maximal verwirrend.

Code:
postgres=# create table customers(id int primary key, name text);
CREATE TABLE
postgres=# create table devices(id_customer int references customers, name text);
CREATE TABLE
postgres=# create table count (datum date, count int, id_customer int references customers);
CREATE TABLE
postgres=# insert into customers values (1, 'kunde 1');
INSERT 0 1
postgres=# insert into customers values (2, 'kunde 2');
INSERT 0 1
postgres=# insert into count values (current_date, 5, 1);
INSERT 0 1
postgres=# insert into count values (current_date, 10, 2);
INSERT 0 1
postgres=# select c.name, count.count from count left join customers c on count.id_customer=c.id;
  name   | count 
---------+-------
 kunde 1 |     5
 kunde 2 |    10
(2 rows)

postgres=#

Entspricht das Deinen Tabellen und Zielen?
 
Meinst
Er vergleicht ja die Device Tabelle mit der Temp Tabelle, hier soll dann die Customer gecounted werden und in die Count Tabelle geschrieben werden.
Soll das bedeuten, das Bild zeigt ein Diagramm, das Datenherkunft und Ergebnis symbolisiert?

Deine Fragen sind wirklich nicht leicht zu verstehen! Nahezu kein Begriff passt zum anderen oder ist mindestens mehrdeutig.
Wenn Du Dir die Mühe machst, ein Bild anzufertigen/zu liefern, wieso verwendest Du nicht die daraus lesbaren, immerhin eindeutigen, Begriffe?

Welche Tabelle im Bild (mit welchem Namen) gehört zu Deiner Auflistung 1-3?
Welche von all den Namen sind Hostnames oder umgekehrt?
Welcher count ist license_count?
Was ist die 2.DB?
Was sollte man noch über die zusätzliche Tabelle wissen-außer dass dort auch Hostnames drin stehen?
Welcher der verschiedenlich genannten Tabellen entspricht der Tabelle "temp" in Deinem SQL Statement? (Ich sehe keine Tabelle, mit einer Spalte "device"?
Ich glaube ich könnte die Frageliste fortführen, aber Du merkst vielleicht auch so, worauf ich hinaus will.

Deine Angaben sind alles andere als eine klare Frage, um mich nicht ständig zu wiederholen, kannst Du Dir das durchlesen (oder auch den ganzen Thread, schadet nicht):

Und noch mal klar: Ein Bild ist toll, aber interpretierbar, sowohl durch den Betrachter, als auch den Ersteller. Am besten und vollkommen unmissverständlich sind Skripte. Damit kann man sich mehrere Seiten Posts sparen, die nur dazu dienen, überhaupt die Frage zu verstehen.
Versuch mal bitte 3 oder 4 Table Create Statements zu posten und zu jeder Tabelle ein paar Inserts, dann wissen hier alle, was bei Dir der Status Quo ist.
 
OT
Mir ist gerade aufgefallen, dass es im Thread andere Bilder (Ausschnitt?) als unter "Aktivitäten" gibt.
Kann man klären, was wirklich angezeigt werden soll und wieso die Darstellung so verschieden ist?
 
So um das nochmal Verständicher auszudrücken, ich versuche das ganze per Powershell

  • Ich habe die Customer Tabelle, da stehen nur Name und ne ID drin, die Dient später nur zum Auswerten mit der View
  • Bei der devices Tabelle habe ich drin stehen, "devices" z.bsp.. ".Firma.local, DESKTOP-ONSDOI34 oder kürzel von einem Geräte 'afh' " und als 2. Spalte ist dann die "ID" z.Bsp. "16"
  • Die devices Tabelle ist fest und da wird auch nichts dran geändert
  • Mit Powershell lege ich eine Temporäre Datenbank aus einer CSV an, da möchte ich nur eine Spalte auslesen, wo die Devices stehen

Ich möchte jetzt die Temporäre Datenbank (Devices) mit der devices Tabelle vergleichen, hierbei soll die ID aus der devices Tabelle gecounted werden (sie wird in powershell, dann in eine Variable gespeichert und dann per Insert in die Count Tabelle geschrieben)

Ich hoffe ich konnte jetzt alles eine wenig ausräumen und verständlicher ausdrücken
 
Werbung:
Aus allem was Du geschrieben hast, habe folgende nutzbare Informationen verstanden, Bezeichner sind teilweise von mir ausgedacht, ebenso ein Fremdschlüssel:

Es existieren 4 Tabellen:
table customer (spielt bei der Frage keine Rolle?)
customer_id
name

table devices
devices
id

temp table tempdevices
devices

table count
<device_id>?
datum
count
id_customer (spielt bei der Frage keine Rolle?)

Gewollt ist ein Vergleich von devices und tempdevices.
Der Vergleich selbst ist unklar, z.B. ??
devices.devices = tempdevices.device ??

darauf dann ein Count von devices.id

Daraus würde ich folgendes Select raten:

select d.id, count(*) as device_count
from temp_devices td
join devices d on td.device = d.device
group by d.id;

Und daraus wiederum folgendes Insertstatement zusammensetzen:
insert into count (datum, device_id, count)
select getdate(), x.id, x.device_count from (
select id, count(*) as device_count
from temp_devices td
join devices d on td.device = d.device
group by d.id;
) x;

Die CustomerID, die noch rumgeistert, habe ich rausgelassen, um weitere Verwirrung zu vermeiden.

Zuletzt nochmal eine Anmerkung zu Deinem Fragestil:
Wieso benennst Du nicht 4 Tabellen mit einem eindeutigen Namen und deren relevante Spalten? Wie wäre es mit 2-3 stimmigen Beispieldatensätzen?
Und ich trau mich kaum zu fragen: das gewünschte Ergebnis sähe wie aus? Hast Du mal meinen Link zur Problematik der Fragestellung verfolgt?
Wir sind jetzt 8 Posts und 3 Tage weiter seit Deiner Eröffnung und die Frage hat offenbar noch niemand verstanden. Es gibt viel Text in Deinen Beiträgen, aber vieles davon ist unverständlich oder widersprüchlich oder irrelevant? Man weiß es nicht.

Wenn Du etwas "nochmal" verständlicher ausdrücken willst, geht man dann davon aus, dass das zuvor Gesagte nicht mehr gilt oder das "Nochmal"? Wie muss man zum Verständnis vorgehen, wenn beide Posts unvollständig und sich widersprechen ?

Wenn Du weiter in Foren nach Rat fragst, solltest Du versuchen, Deine Fragen deutlich präziser zu stellen. Kleines Beispiel: Wenn ich jemand besuchen möchte und frage ihn, wo wohnst Du, nützt mir eine Wegbeschreibung mit Händen und Füßen ".. nach dem Lidl kommt dann eine Verkehrsinsel und dann links die 2., aber nicht die Einbahnstraße, sondern an dem großen Haus die zweite.." weniger, als seine Adresse.
 
Zurück
Oben