Gå til innhold

Resultateter fra koblingstabell med butikker (SQL eller PHP løsning)


Anbefalte innlegg

Har to tabeller og en koblingstabell: produkt, butikk og butikk_produkt. 

Produkt viser et produkt som kan finnes i flere butikker. Dette kobles sammen i butikk_produkt.

For å vise resultatene bruker jeg følgende SQL: 

SELECT navn, butikk 
   FROM produkt p 
      LEFT JOIN butikk_produkt bp ON p.produktid = bp.produktid 
      INNER JOIN butikk b ON b.butikkid = bp.butikkid;

Da kan svaret f.eks. bli :

 

navn butikk
såpe sapebutikken
såpe sapertilsalgs

 

Skulle helst hatt et svar som under og gjerne med butikker til det uendelige. Finnes det en slik løsning i SQL eller PHP? Gjøre svaret om til arrays på en måte eller noe? Veldig takknemlig for svar.

navn butikk butikk2
såpe sapebutikken sapertilsalgs

 

Skal for eksempel kunne vises på nett som:

Såpe
Finnes i sapebutikken, sapertilsalgs...

 

Takker for svar!

Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+6132

Jeg vet ikke helt, har f.eks. ikke tabellene dine og kan ikke dette så godt, men blir det ikke å bruke WHERE, på en lignende måte som dette?

SELECT soap, store_location FROM stores WHERE soap="søkeord såpenavn"

Da må du ha en tabell stores (en tabell med alle butikker) som inneholder såper og hvor de finnes.

Ev. kan du ha en løkke som går gjennom alle butikker, hvis de ikke ligger i en samlet tabell. Da vil man naturlig ha en overordnet tabell med butikker, for å samle dem, selv om man itererer i "butikk" og ikke "butikkene".

Lenke til kommentar
  • 3 uker senere...
  • 2 år senere...
  • 4 uker senere...
gt89 skrev (På 15.1.2025 den 22.19):

legg til en ny kolonne i tabellen din

Det er nesten helt sikkert ikke ønsket løsning. Spørsmålet er veldig gammelt, men hvis noen lurer på noe tilsvarende så kan man se om SQL-versjonen støtter en form for string-aggregation. Dette eksempelet i SQL Server 2019 produserer et komma-separert resultat:

DECLARE @butikk TABLE (butikkid int, navn nvarchar(50))
DECLARE @produkt TABLE (produktid int, navn nvarchar(50))
DECLARE @butikk_produkt TABLE (produktid int, butikkid int)

INSERT INTO @butikk
VALUES (1, 'sapebutikken'), (2, 'sapertilsalgs')

INSERT INTO @produkt
VALUES (1, 'såpe')

INSERT INTO @butikk_produkt
VALUES (1, 1), (1, 2)

SELECT p.navn, (
	SELECT STRING_AGG(b.navn, ', ')
	FROM @butikk_produkt bp
	JOIN @butikk b ON b.butikkid = bp.produktid
	WHERE bp.produktid = p.produktid
	) AS Butikker
FROM @produkt p

Men merk at den opprinnelige spørringen allerede returnerer et resultat som er på et mye vennligere data-format for å bruke videre i kode.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...