COUNT()
-
Hallo,
ich habe mal ne Frage zum COUNT().
Und zwar habe ich eien SELECT Anweisung in einer Stored Procedure.
Mit dieser Select Anweisung hole ich mir verschiedene Einträge aus mehrern Tabellen über LEFT OUTER JOINS.
Jetzt möchte ich die "gesammelten Einträge der neuen Tabellen" zählen, und weiss nicht wie.
Wenn ich den COUNT() in die Select Anweisung mach, bekommen ich ja alle Einträge aus der ersten Tabelle, nicht aus der neuen....Hat jemand einen Rat für mich?
-
Welches DBMS? Wenn Subselects unterstützt werden, gehts am einfachsten so:
select count(*) from (select dies und das join und so from etc)
-
Oder Du verwendest ClientCode um zu schauen wieviele Datensätze zurückgeliefert wurden.
DIes kann jedes RDBMS.
-
Und wie bekomme ich die Einträge in eine Tabelle?
Wenn es 5 Einträge sind, will ich ja genau diese in eine Tabelle schreiben.
Gibt es da eine Art Schleife oder so?
-
Formulier die Frage nochmal um, ich bin verwirrt
-
OK.
Also ich habe eine Stored Procedure.
In dieser habe ich eine SELECT Anweisung.
Mit dieser Select Anweisung hole ich mir Infos aus mehrern Tabellen.
(Alles über Joins, so ca. 5 verschiedene Tabellen).SELECT
bla
, blaFROM tabelle
LEFT OUTER JOIN tabell_1
ON tabelle_1.id = tabelle_idusw..
WHERE....
GROUP BY....
ORDER BY
tabelle_idso z.B.
Jetzt möchte ich die Ergebnisse der SELECT Anweisung in eine neue Tabelle schreiben.
Also wenn mir die SELECT Anweisung z.B. 10 Ergebnisse liefert, will ich diese 10 Datensätze in eine Tabelle schreiben, aber wie?War das verständlich?
-
Versuch' mal
INSERT INTO newtable (col1,col2,...) SELECT * FROM mytrigger;
oder wenn die Ergebnistabelle noch nicht existiert:
CREATE TABLE newtable AS SELECT * FROM mytrigger;
-
Was meisnt Du mit:
SELECT * FROM mytrigger;
-
simcon schrieb:
Was meisnt Du mit:
SELECT * FROM mytrigger;
Damit meinte er deinen SQL-QUERY
SELECT bla , bla FROM tabelle LEFT OUTER JOIN tabell_1 ON tabelle_1.id = tabelle_id usw.. WHERE.... GROUP BY.... ORDER BY tabelle_id
-
Kann mir jemand den ganzen SQL Code zusammenstellen?
Ich steh geade voll auf dem Schlauch
-
Dann nehme ich also den Code
INSERT INTO newtable (col1,col2,...) SELECT * FROM mytrigger;
Dann frage ich "was ist mit SELECT * FROM mytrigger gemeint", was mit "mein SQL-Query" beantwortet wird.
Nun ersetze ich "SELECT * FROM mytrigger" durch
SELECT bla , bla FROM tabelle LEFT OUTER JOIN tabell_1 ON tabelle_1.id = tabelle_id usw.. WHERE.... GROUP BY.... ORDER BY tabelle_id
und erhalte
INSERT INTO newtable (col1,col2,...) SELECT bla , bla FROM tabelle LEFT OUTER JOIN tabell_1 ON tabelle_1.id = tabelle_id usw.. WHERE.... GROUP BY.... ORDER BY tabelle_id
...war nun nicht so schwer, oder?
-
Die erste Spalte beim Insert ist die ID der Tabeele.
Diese sollte ja automatisch erhöht werden. Wie mach ich das, ohne ein autoimkrement anzugegeben?
-
Wenn die Primärschlüssel automatisch durch ein Autoincrement erhöht werden, dann lass diese Spalte doch einfach aus. In der Insert-Projektion (col1, col2, ...) eben die Primspalte nicht mit angeben und in der Select-Projektion SELECT col1, col2 eben auch nicht.