Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Om ett värde i databasen inte finns, hämta ett annat

Postades av 2004-08-11 12:41:12 - Patrik Ahlberg, i forum sql-server/msde, Tråden har 6 Kommentarer och lästs av 732 personer

Håller på med en hemsida med produkter. Produkttexterna finns på olika språk.
Nu håller jag på med en sp som ska hämta alla produkterna. Man skickar som parameter med vilket språk man vill använda sig av. Men om informationen inte finns på språket man skickar in vill jag att man ska få den engelska texten eftersom den alltid finns.
Tabellerna som används är:
tLanguage (LanguageID, LanguageName)
tProduct (Information om produkten)
tProductStr (Information om produkten som ska kunna vara på olika språk. tex beskrivning av produkten)

Just nu ser min sp ut så här:

CREATE PROCEDURE [dbo].[spGetAllProducts]
@ProductCategory varchar(10) = '',
@LanguageID varchar(3) = 'ENG'
AS

SELECT
tProduct.ProductID,
ProductName,
ProductCategory,
tProductStr.ProductDescription,
tProductStr.ProductLongText,
BackgroundImage,
ProductImage,
ProductSweden,
ProductNorway,
ProductFinland,
ProductDenmark
FROM
tProduct
INNER JOIN
tProductStr ON
tProductStr.ProductID = tProduct.ProductID
WHERE
ProductCategory LIKE CASE @ProductCategory WHEN '' THEN ProductCategory ELSE @ProductCategory END AND
tProductStr.LanguageID = @LanguageID
ORDER BY ProductCategory, ProductName
GO

Så jag måste kolla när jag joinar in tProductStr om strängen finns för det valda språket. Någon som har nåt tips om hur jag kan göra detta på nåt smidigt sätt?
Tack på förhand!


Svara

Sv: Om ett värde i databasen inte finns, hämta ett annat

Postades av 2004-08-11 14:28:20 - Daniel Åsberg

Har inte kollat igenom koden så noga på nått vis.
Men skulle det inte underlätta om du gjorde en separat tabell med det engelska språket? Eftersom att det alltid skulle finnas.
Alternativt en extra kolumn i produkt-huvud-tabellen (om det nu fanns en sån?)

/D


Svara

Sv: Om ett värde i databasen inte finns, hämta ett annat

Postades av 2004-08-12 13:29:11 - Per Hultqvist

Finns det alltså en kolumn som heter ProductEnglish också? I sådana fall skulle du kanske kunna göra så här :

CREATE PROCEDURE [dbo].[spGetAllProducts]
	@ProductCategory varchar(10) = '',
	@LanguageID varchar(3) = 'ENG'
AS

SELECT
	tProduct.ProductID,
	ProductName,
	ProductCategory,
	tProductStr.ProductDescription,
	tProductStr.ProductLongText,
	BackgroundImage,
	ProductImage,
	IsNull(ProductSweden,ProductEnglish),
	IsNull(ProductNorway,ProductEnglish),
	IsNull(ProductFinland,ProductEnglish),
	IsNull(ProductDenmar,ProductEnglish)k
FROM
	tProduct
INNER JOIN 
	tProductStr ON
	tProductStr.ProductID = tProduct.ProductID
WHERE
	ProductCategory LIKE CASE @ProductCategory WHEN '' THEN ProductCategory ELSE @ProductCategory  END AND
	tProductStr.LanguageID = @LanguageID
ORDER BY ProductCategory, ProductName
GO


I värsta fall får du ju dock samma sträng fyra gånger om texten inte finns på något språk...Hoppas jag förstod dig rätt, och inte kastar ur mig något heltokigt :-)


Svara

Sv: Om ett värde i databasen inte finns, hämta ett annat

Postades av 2004-08-12 14:39:06 - Patrik Ahlberg

Nej det gör det inte.
I tabellen tProductStr finns fälten StrId, LanguageID, ProductID, ProductDescription, ProductLongText.
När man lägger till en ny produkt och skriver in en description och lång text så läggs det in i den tabellen med engelska som standard.
Och om man nu valt svenska på sidan och description för den nyinlaggda produkten inte finns vill jag kunna "falla" tillbaka och hämta den engelska strängen.
Men jag har löst den programmeringsmässigt på hemsidan nu men antar att det bästa vore om man skötte allt i min SP istället.


Svara

Sv: Om ett värde i databasen inte finns, hämta ett annat

Postades av 2004-08-13 01:38:27 - Micke Hansson

Tjena

Så här brukar jag bygga språkstöd för en tabell och om du kör SQL 2000 så kanske detta vara något för dig.

Om vi utgår från tabellen Products.. Den innehåller ProductID int IDENTITY, Productname nvarchar(100) och Productdescription nvarchar(4000)..

Tabell nr 2 heter ProductsLANG och innehåller ProductLANGID int IDENTITY, ProductID int, LanguageID int, Productname nvarchar(100), Productdescription nvarchar(4000) och den är till för innehålla de kolumner som jag vill ha språkstöd för i huvudtabellen..

Detta vrappar jag in i en UDF (kom i SQL Server 2000).. Den ser ut så här..

CREATE FUNCTION dbo.Products
(
@LanguageID int
)

RETURNS table

AS RETURN
(
SELECT Products.ProductID,
ISNULL(ProductsLANG.Productname, Products.Productname) AS Productname,
ISNULL(ProductsLANG.Productdescription, Products.Productdescription) AS Productdescription
FROM Products LEFT OUTER JOIN (SELECT ProductID, Productname, Productdescription FROM ProductsLANG WHERE LanguageID = @LanguageID) ProductsLANG ON Products.ProductID = ProductsLANG.ProductID
)

För att plocka fram produkter på valt (ex 1 för engelska) språk kör jag följande sql och så länge jag använder funktionen istället för tabellen så kommer jag få språkstöd...

SELECT *
FROM fnProducts(1)








Svara

Sv: Om ett värde i databasen inte finns, hämta ett annat

Postades av 2004-08-18 14:28:42 - Patrik Ahlberg

Åhh, detta kan vara precis vad jag har letat efter. Alltså att man får en fallback på ett språk. Perfekt!
Men jag har ett till problem. Det ska finnas en näringstabell för varje produkt och den kan variera, alltså produkterna kanske inte innehåller samma ämnen osv. Bör man bygga en (eller två) egna tabeller för detta ändamål tycker du eller kan man använda samma produkttabeller som i ditt exempel. Tänker på att det kan vara olika många strängar som ställer till det.


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
576
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies