none
Sql datenbank hilfe RRS feed

  • Frage

  • ich habe ein paar probleme und nciht die erfahrung und das wissen um mir die passenden funktionen zu erstellen dadrum wollte ich mal hier fragen ob ihr mir helfen könnt diese zu bauen oder vlt schon fertige auf lager habt :)
    Dienstag, 8. Juli 2014 07:54

Antworten

  • Hallo Uncutevo0,

    "ich hab nicht soviel zeit das ich mich grundlegend mit allem von sql auseinander setzten kann"

    hmm - das ist meiner Meinung nach der komplett falsche Ansatz und ein Indikator dafür, warum ich genau mit solchen Anwendungen - anschließend - mein Geld verdiene :)

    "wie mus ich das dann bei der demo oben verstehen weil da steht ja immer user id"

    Gehört das dann auch zu Deiner Philosophie des ersten Satzes? Bei allem Respekt; hier mußt Du dich nicht mit SQL "auseinandersetzen" sondern Du mußt einfach nur das Beispiel nehmen, analysieren und verstehen!

    Bitte beachte, dass die Leute, die hier antworten, dies in ihrer Freizeit machen. Dieser "Service" ist kostenlos; ich empfinde das schon fast als Beleidigung, wenn man sich die Mühe macht, Beispiele zu erstellen die dann doch nicht gelesen werden!

    Also das Beispiel in abgeänderter Form noch einmal - aber dann solltest Du es verstehen ;)

    USE demo_db;
    GO
    
    CREATE TABLE dbo.[1234]
    (
    	nemid		INT		NOT NULL	IDENTITY (1, 1),
    	USER_NAME	varchar(30),
    
    	CONSTRAINT pk_1234_UserId PRIMARY KEY CLUSTERED (nemid)
    );
    GO
    
    CREATE TABLE dbo.[4321]
    (
    	[User Id]		int		NOT NULL	REFERENCES dbo.[1234] (User_Id) ON DELETE CASCADE,
    	Cash		SMALLMONEY	NOT NULL	DEFAULT (0),
    	Status		BIT		NOT NULL	DEFAULT (0),
    	Datum		DATETIME	NOT NULL	DEFAULT (GETDATE()),
    
    	CONSTRAINT pk_4321_User_Id PRIMARY KEY CLUSTERED ([User id])
    );
    GO
    
    CREATE TRIGGER dbo.trg_1234_Insert
    ON dbo.[1234]
    FOR INSERT
    AS
    	SET NOCOUNT ON;
    	
    	INSERT INTO dbo.[4321] (User_Id)
    	SELECT	nemid
    	FROM	inserted;
    
    	SET NOCOUNT OFF;
    GO
    
    -- demo
    INSERT INTO dbo.[1234] (User_Name) VALUES ('Uwe Ricken');
    GO
    
    SELECT * FROM dbo.[1234];
    SELECT * FROM dbo.[4321];

    @Björn:

    Auf Rechtschreibung herumzureiten, sie selbst auch nicht perfekt zu beherrschen, halte ich für anmaßend! Wir wissen nicht, ob der Threadstarter Deutscher ist oder unter Legastenie leidet. Dieses Forum ist kein Rechtschreibforum sondern ein IT-Forum; ähnlich dürfte es unseren Kollegen wohl in den englischen Foren gehen, oder?

    Wie würdest Du reagieren, wenn Dir in den englischen Foren jemand schlechte Grammatik oder Rechtschreibung vorwirft? Du würdest ev. nicht mehr posten. Und das wäre schade, davon leben Foren, wie diese hier!


    MCM - SQL Server 2008
    MCSE - SQL Server 2012
    db Berater GmbH
    SQL Server Blog (german only)


    Mittwoch, 9. Juli 2014 05:03

Alle Antworten

  • also als erstes suche ich eine funktion die ich als neue abfrage oder so machen kann die mir aus einer tabelle aus einer bestimmten spalte namen raus sucht und dann nur die zeilen in einem extra fenster wieder gibt die in der spalte den namen enthalten bsp

    tabelle 1234

    spalten  baum blätter knospen
    zeile 1 braun grün x
    zeile 2 braun gelb x

    zeile 3 grün gelb x

    zeile 4 braun grün x

    funktion suche mir aus tabelle 1234 spalte blätter die grünen

    am ende sol dann nur auf einem extra blatt die zeilen mit grünen blätternstehen

    zeile 1 braun grün x

    zeile 4 braun grün x

    so eien funktion suche ich


    problembei meiner datenbank ist einfach das da viele log drin sidn die 200k und mehr zeilen haben da einzelnd suchen ist echt die höhle habe danna uch noch mehr funktionenn die ich brauchte und ich sags gleich vorne weg ich hab echt sehr wennig ahnung und bitte wundert euch nciht über meine schreib weise wenn ich mal bustaben dreher drin habe das ich schreib zu schnell mit finger such system :D
    • Bearbeitet UncutevoO Dienstag, 8. Juli 2014 08:05
    Dienstag, 8. Juli 2014 07:58
  • Hallo UncutevoO,

    ich glaube, dass Du Relationale Datenbanken mit "Programmierung" verwechselst. Du solltest Dich zunächst mal mit dem Konzept der Relationalen Datenbanken vertraut machen. Dann wirst Du auch sehr schnell fündig, dass Daten mit SELECT ermittelt werden.

    Für Dein konkretes Beispiel wäre das wie folgt:

    SELECT * FROM [12345] WHERE Blaetter = 'gruen';

    Wenn jedoch nicht der exakte Wert in dem Attribut vorhanden ist, musst Du mit LIKE arbeiten (die ganzen Vor- und Nachteile lassen wir aus Gründen der Vereinfachung einfach mal weg!)

    SELECT * FROM [12345] WHERE Blaetter LIKE '%gruen%';


    MCM - SQL Server 2008
    MCSE - SQL Server 2012
    db Berater GmbH
    SQL Server Blog (german only)

    Dienstag, 8. Juli 2014 09:09
  • danke naja ich hab das bsp nur gewählt weil ich mich mit worten immer schelcht ausdrücken kann und dann verstehen vieles es nciht auf anhieb und vielen lieben dank deine funktion ist genau das was ich gesucht habe meine ich hätte da noch ein paar mehr dinge was funktion betrifft die auch etwas komplexer sind teil funktionen habe ich schon aber ich will das als einegesammt funktion oder als dauerhafte funktion in der tabelle habenund zwar ist es eine vergleichund add funktion von 2 tabllen 2 spalten

    ich habe tabelle 1234 spalte nuser mit user 1-10

    tabelle 4321 mit spalten

    nuser  cash status datum

    1 0 false datum

    2 50 false datum

    3 30 false datum

    ende

    ich hätte gern das von 1234 zu 4321 die nuser vergleichen werden und die fehlen geaddet werden mit cash 0 status false und dem aktuelen datum

    dananch dann eine erhöhung des cash da hab ich die funktion aber schon das wäre

    UPDATE 4321
    SET [Cash] = cash + '230'

    Dienstag, 8. Juli 2014 09:57
  • Hallo,

    grundsätzlich ist m. E. dieses Forum der falsche Ansatz, um SQL zu "lernen". Du mußt Dich erst einma mit dem Basiswissen und der Terminologie auseinander setzen. In einem Thread kann man nicht alle Grundlagen von SQL beschreiben (dazu bedarf es dann doch Bücher!).

    Dein Ziel erreichst Du entweder mit Triggern oder aber mit nachgelagerten SQL-Statements, die das DELTA in die Zieltabelle eintragen. Ich habe hier mal ein Beispiel mit Triggern erstellt:

    USE demo_db;
    GO
    
    CREATE TABLE dbo.[1234]
    (
    	USER_ID		INT		NOT NULL	IDENTITY (1, 1),
    	USER_NAME	varchar(30),
    
    	CONSTRAINT pk_1234_UserId PRIMARY KEY CLUSTERED (User_id)
    );
    GO
    
    CREATE TABLE dbo.[4321]
    (
    	User_Id		int		NOT NULL	REFERENCES dbo.[1234] (User_Id) ON DELETE CASCADE,
    	Cash		SMALLMONEY	NOT NULL	DEFAULT (0),
    	Status		BIT		NOT NULL	DEFAULT (0),
    	Datum		DATETIME	NOT NULL	DEFAULT (GETDATE()),
    
    	CONSTRAINT pk_4321_User_Id PRIMARY KEY CLUSTERED (User_id)
    );
    GO
    
    CREATE TRIGGER dbo.trg_1234_Insert
    ON dbo.[1234]
    FOR INSERT
    AS
    	SET NOCOUNT ON;
    	
    	INSERT INTO dbo.[4321] (User_Id)
    	SELECT	USER_ID
    	FROM	inserted;
    
    	SET NOCOUNT OFF;
    GO
    
    -- demo
    INSERT INTO dbo.[1234] (User_Name) VALUES ('Uwe Ricken');
    GO
    
    SELECT * FROM dbo.[1234];
    SELECT * FROM dbo.[4321];
    


    MCM - SQL Server 2008
    MCSE - SQL Server 2012
    db Berater GmbH
    SQL Server Blog (german only)

    Dienstag, 8. Juli 2014 10:21
  • ah ich verstehe was du meinst naja ich hab nicht soviel zeit das ich mich grundlegend mit allem von sql auseinander setzten kann ich kann ein paar ansätzeund brauch halt nur bestimmte funktionen da ich mit den server arbeiten an sich schon genug zu tun habe und diese funktion es mir etwas erleichtern sollen damit ich es nicht manuel eintragen mus

    dadrum suche ich hier die hilfe um schneller ans ziel zu kommen durch erfahrende leute und das meiste lern ich eh an praktischen beispielen bin nicht so der theoretiker

    ich kenne leider niemanden im bekanen kreis der mir mit komplexen sql skrippten helfen kann dadrum hier

    ich danke auf jedemfall für jede hilfe und werd emich jetzt etwas mit dem trigger auseinader setzten :)

    fals ich dennoch hier falsch bin werde ich hier auch nicht mehr schreiben will keinem zur last fallen

    Dienstag, 8. Juli 2014 10:37
  • bei dem trigger ich hab ein prob das zu verstehen

    bei mir ist in tabbelle 1234 die user id =nemid

    in 4321 heist es user id ist aber das gleiche

    wie mus ich das dann bei der demo oben verstehen weil da steht ja immer user id

    Dienstag, 8. Juli 2014 10:54
  • Antwort du haben möchtest. Frage du stellen musst richtig. (Joda)

    Hallo UncutevoO,

    bemühe dich bitte um eine möglichst korrekte Rechtschreibung (Groß und Kleinschreibung mit Einbezogen). Es ist ja sicher nicht dein ziel das die Leute 5x mal deine Frage lesen bevor sie überhaupt den Text verstanden haben.

    Nun zur Antwort, wenn in deiner Tabelle die Spalten anders heißen als im Beispiel, musst du natürlich die Namen deiner Spalten an der Entsprechende stelle verwenden.

    Was das Lesen eines Buches angeht, hier wird keiner Verlangen, dass du dir erst mal komplexe Sachen aneignen muss bevor man dir hilf. Aber ein einfaches Select (* from tabel) ist im SQL so grundlegend, dass es einfach jeder Programmierer können sollte. Denn Crash Kurs solltest du dir zumindest mal durchlesen.

    MFG

    Björn

     

    Dienstag, 8. Juli 2014 11:31
  • Hallo Uncutevo0,

    "ich hab nicht soviel zeit das ich mich grundlegend mit allem von sql auseinander setzten kann"

    hmm - das ist meiner Meinung nach der komplett falsche Ansatz und ein Indikator dafür, warum ich genau mit solchen Anwendungen - anschließend - mein Geld verdiene :)

    "wie mus ich das dann bei der demo oben verstehen weil da steht ja immer user id"

    Gehört das dann auch zu Deiner Philosophie des ersten Satzes? Bei allem Respekt; hier mußt Du dich nicht mit SQL "auseinandersetzen" sondern Du mußt einfach nur das Beispiel nehmen, analysieren und verstehen!

    Bitte beachte, dass die Leute, die hier antworten, dies in ihrer Freizeit machen. Dieser "Service" ist kostenlos; ich empfinde das schon fast als Beleidigung, wenn man sich die Mühe macht, Beispiele zu erstellen die dann doch nicht gelesen werden!

    Also das Beispiel in abgeänderter Form noch einmal - aber dann solltest Du es verstehen ;)

    USE demo_db;
    GO
    
    CREATE TABLE dbo.[1234]
    (
    	nemid		INT		NOT NULL	IDENTITY (1, 1),
    	USER_NAME	varchar(30),
    
    	CONSTRAINT pk_1234_UserId PRIMARY KEY CLUSTERED (nemid)
    );
    GO
    
    CREATE TABLE dbo.[4321]
    (
    	[User Id]		int		NOT NULL	REFERENCES dbo.[1234] (User_Id) ON DELETE CASCADE,
    	Cash		SMALLMONEY	NOT NULL	DEFAULT (0),
    	Status		BIT		NOT NULL	DEFAULT (0),
    	Datum		DATETIME	NOT NULL	DEFAULT (GETDATE()),
    
    	CONSTRAINT pk_4321_User_Id PRIMARY KEY CLUSTERED ([User id])
    );
    GO
    
    CREATE TRIGGER dbo.trg_1234_Insert
    ON dbo.[1234]
    FOR INSERT
    AS
    	SET NOCOUNT ON;
    	
    	INSERT INTO dbo.[4321] (User_Id)
    	SELECT	nemid
    	FROM	inserted;
    
    	SET NOCOUNT OFF;
    GO
    
    -- demo
    INSERT INTO dbo.[1234] (User_Name) VALUES ('Uwe Ricken');
    GO
    
    SELECT * FROM dbo.[1234];
    SELECT * FROM dbo.[4321];

    @Björn:

    Auf Rechtschreibung herumzureiten, sie selbst auch nicht perfekt zu beherrschen, halte ich für anmaßend! Wir wissen nicht, ob der Threadstarter Deutscher ist oder unter Legastenie leidet. Dieses Forum ist kein Rechtschreibforum sondern ein IT-Forum; ähnlich dürfte es unseren Kollegen wohl in den englischen Foren gehen, oder?

    Wie würdest Du reagieren, wenn Dir in den englischen Foren jemand schlechte Grammatik oder Rechtschreibung vorwirft? Du würdest ev. nicht mehr posten. Und das wäre schade, davon leben Foren, wie diese hier!


    MCM - SQL Server 2008
    MCSE - SQL Server 2012
    db Berater GmbH
    SQL Server Blog (german only)


    Mittwoch, 9. Juli 2014 05:03