SQL: Oppdatere en tabell basert på en annen
SET Eier =
(SELECT HendelseEier
FROM HendelseInformasjon
WHERE (Hendelse.HendelseInformasjonId = HendelseInformasjonId))


Comments [0]
Comments [0]
Comments [0]
Comments [0]
Comments [0]
<xsl:variable name="linker">
<link ID='Person'>Personopplysninger</link>
<link ID='Dekninger'>Dekninger</link>
<link ID='Begunstigelse'>Begunstigelse</link>
<link ID='Pantsettelse' >Pantsettelse</link>
<link ID='Innbetaling' >Innbetaling</link>
<link ID='Avtalegiro' >Avtalegiro</link>
<link ID='Raadgiver' >Rådgiver</link>
</xsl:variable>
xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<a>
<xsl:attribute name="href">
#<xsl:value-of select="@ID" />
</xsl:attribute>
<xsl:value-of select="."/>
</a>
Comments [1]
Dette er en utvidelse av en del av forrige post.
Her kjører vi selfjoin på en subquery for å kunne returnere flere verdier fra samme subquery:
CREATE PROCEDURE [dbo].[sp_ProduktlistingNy]
@dato datetime = NULL,
@leverandorid int = NULL
AS
BEGIN
IF @dato IS NULL SET @dato= getdate();
SELECT TOP (100) PERCENT P.ProduktID , P.LeverandorID, P.Navn, P.Betalingsinformasjon,
P.KravOmEpostFaktura, P.KravOmEfaktura, P.KravOmAvtalegiro, P.Landsdekkende,
P.Inaktiv, T.Termin, TYP.ProduktType,
TYP.Kortnavn, PV1.KraftPris, PV1.TidspunktInnmelding
FROM dbo.Produkter P
INNER JOIN
dbo.ProduktTyper TYP ON P.ProduktTypeID = TYP.ProduktTypeID
INNER JOIN
dbo.Terminer T ON P.TerminID = T.TerminID
LEFT OUTER JOIN
dbo.Prisvarsler PV1 ON (select TOP(1) ProduktID from dbo.PrisVarsler PV Where PV.ProduktID=P.ProduktID AND PV.GjelderFraDato<=@dato ORDER BY PV.GjelderFraDato) = PV1.ProduktID
WHERE (P.LeverandorID = @LeverandorId OR @LeverandorID is null)
ORDER BY P.LeverandorID, TYP.Kortnavn
END
Comments [0]
Valgfrie parametre:
Her kommer en sqlprosedyre med to valgfrie parametre:
Begge blir satt til NULL i deklarasjonen:
@dato datetime = NULL,
@leverandorid int = NULL
deretter blir @dato satt til dagens dato hvis den er null,
BEGIN
IF @dato IS NULL SET @dato= getdate();
mens @LeverandorID har et lite triks hvis den er tom:
WHERE (dbo.Produkter.LeverandorID = @LeverandorId OR @LeverandorID is null)
Select i select
Annet interessant er en selectkolonne i select: husk paranteser rundt og gi den deretter et navn vha AS:
…, dbo.ProduktTyper.Kortnavn, (select TOP(1)KraftPris from dbo.PrisVarsler Where ProduktID=dbo.Produkter.ProduktID AND GjelderFraDato<=@dato ORDER BY GjelderFraDato) as GjeldendePris
FROM dbo.Produkter ….
Dato fra sqlserver til PHP:
Hvordan konvertere en dato fra Sqlserver for bruk i PHP:
CONVERT(varchar, dbo.Produkter.Opprettet, 104) + ' ' + SUBSTRING(CONVERT(varchar, dbo.Produkter.Opprettet, 108), 1, 5) AS Opprettet,
Full listing av Stored procedure:
CREATE PROCEDURE [dbo].[sp_Produktlisting]
@dato datetime = NULL,
@leverandorid int = NULL
AS
BEGIN
IF @dato IS NULL SET @dato= getdate();
SELECT TOP (100) PERCENT dbo.Produkter.ProduktID , dbo.Produkter.LeverandorID, dbo.Produkter.Navn,
dbo.Produkter.Betalingsinformasjon,dbo.Produkter.KravOmEpostFaktura, dbo.Produkter.KravOmEfaktura,
dbo.Produkter.KravOmAvtalegiro, dbo.Produkter.Landsdekkende,
CONVERT(varchar, dbo.Produkter.Opprettet, 104) + ' ' + SUBSTRING(CONVERT(varchar,dbo.Produkter.Opprettet, 108), 1, 5) AS Opprettet,
dbo.Produkter.Inaktiv, CONVERT(varchar, dbo.Produkter.Oppdatert, 104) AS Oppdatert, dbo.Terminer.Termin, dbo.ProduktTyper.ProduktType,dbo.ProduktTyper.Kortnavn,
(select TOP(1)KraftPris from dbo.PrisVarsler Where ProduktID=dbo.Produkter.ProduktID AND GjelderFraDato<=@dato ORDER BY GjelderFraDato) as GjeldendePris
FROM dbo.Produkter INNER JOIN
dbo.ProduktTyper ON dbo.Produkter.ProduktTypeID = dbo.ProduktTyper.ProduktTypeID INNER JOIN
dbo.Terminer ON dbo.Produkter.TerminID = dbo.Terminer.TerminID
WHERE (dbo.Produkter.LeverandorID = @LeverandorId OR @LeverandorID is null)
ORDER BY dbo.Produkter.LeverandorID, dbo.ProduktTyper.Kortnavn
Comments [0]

Comments [0]
Comments [0]