Online Webmasters - Het forum voor webmasters: [Sql] Ingewikkeld Probleem door Jonathan

Ga naar inhoud

Pagina 1 van 1
  • Je kunt geen nieuwe topic starten
  • Je kunt niet antwoorden op deze topic

[Sql] Ingewikkeld Probleem Score Topic: -----

#1 Gebruiker is offline   Jonathan 

  • Newbie
  • Pip
  • Groep: Members
  • Posts: 2
  • Lid geworden: 03 mei 2010

Gepost 12 juni 2010 - 12:13

Momenteel ben ik bezig met een webshop waarin boeken verkocht gaan worden. Het systeem wordt met de hand gebouwd en is dus volledig op maat ontworpen om alles zo optimaal mogelijk te maken voor boeken.

De moeilijkheid zit hem nu in het veld met de auteur(s) van een boek. Het zit namelijk zo: een boek kan één of meerdere auteurs hebben. Indien er meerdere auteurs zijn, wordt er rekening gehouden met de volgorde (de eerstgenoemde auteur is vaak de 'belangrijkste' auteur). Tot slot kan het nog zijn dat er erg veel mensen mee hebben gewerkt die niet allemaal los genoemd worden, dan wordt achter het gewone rijte van (de) auteur(s) de tekst "en anderen" toegevoegd.

Om het wat minder abstract te maken, even een voorbeeldje van een aantal mogelijke opties:

Quote

- Eric Cartman
- Eric Cartman, Stan Marsh en Kyle Broflovski
- Eric Cartman en anderen
- Eric Cartman, Stan Marsh en anderen

Voor de opslag van deze data heb ik voor de volgende opbouw gekozen:

Quote

book
- id
- author-others*

book_author
- book_id
- author_id
- number**

author
- id
- first-name
- last-name

* Boolean voor de suffix "en anderen".
** Nummer van de auteur bij een bepaald boek, om de volgorde te bepalen. Iemand toevallig een idee voor een betere naam?

Het probleem zit hem nu in het ophalen van de data: hoe kan ik een lijst met boeken én bijbehorende auteurs (in een array) ophalen? Misschien lukt het met trucjes nog wel om de auteurs al door MySQL te formatteren tot de uiteindelijke string, maar dat is absoluut niet de bedoeling. Ik wil dat ik gewoon een array met de auteurs (id, first-name, last-name en number) krijg en die op welke manier dan ook kan verwerken. Een klein voorbeeldje van hoe ik deze data wil hebben vind je hier.

Mijn vraag is nu dus: hoe kan ik dit zo handig mogelijk doen? Ik vrees dat dit niet gaat lukken met één query, dus moet ik nu per boek nog een query uitvoeren om de auteurs op de halen? Of hebben jullie misschien goede ideeën hierover?
0

#2 Gebruiker is offline   Luuk 

  • Administrator
  • Groep: Administrators
  • Posts: 129
  • Lid geworden: 22 februari 2010

Gepost 12 juni 2010 - 18:38

SELECT
	b.id AS bookid,
	a.first-name,
	a.last-name
FROM
	books AS b
JOIN
	book_author AS ba
	ON ba.book_id = b.id
JOIN
	author AS a
	ON a.id = ba.author_id


Zoiets?

#3 Gebruiker is offline   Jonathan 

  • Newbie
  • Pip
  • Groep: Members
  • Posts: 2
  • Lid geworden: 03 mei 2010

Gepost 12 juni 2010 - 19:05

@Luuk: Het probleem was juist dat een boek meerdere auteurs kan hebben, op jouw manier werkt het maar met één auteur. Het probleem is echter al opgelost, al is de oplossing niet zo charmant. Toch bedankt voor je hulp natuurlijk!
0

Deel dit topic:


Pagina 1 van 1
  • Je kunt geen nieuwe topic starten
  • Je kunt niet antwoorden op deze topic


Soortgelijke topics Invouwen

  Topic Forum Gestart door Statistieken Laatste post info
Nieuwe Reacties Nog Een Js Probleem Algemeen Raoul 
  • 6 Reacties
  • 145 Hits
Nieuwe Reacties ADV: Case: "SQL Server voorspelt marktvraag" Nieuws Nieuws 
  • 0 Reacties
  • 5 Hits
Nieuwe Reacties ADV:Case: "SQL Server gebruiksvriendelijk" Nieuws Nieuws 
  • 0 Reacties
  • 6 Hits