[MySQL] 'Grouped' resultaat in 1 veld

Pagina: 1
Acties:

  • wasco
  • Registratie: April 2003
  • Laatst online: 22-05 11:53

wasco

brightest crayon in the box

Topicstarter
Ik ben bezig met een aantal ingewikkelde queries. Dit is de query die ik momenteel heb.
code:
1
2
3
4
5
6
7
SELECT * 
FROM akatitles 
INNER JOIN movies
USING(title_id)
WHERE 
MATCH (akatitle) AGAINST ('ugly') 
OR MATCH (title) AGAINST ('ugly')


ok dit kan misschien een beetje moeilijk lijken maar ik heb dus fulltext-search indexes en daardoor ziet het er wat anders uit. Zonder die indexes zou het ongeveer dit zijn voor een goed begrip.
code:
1
2
3
4
5
6
7
SELECT * 
FROM akatitles 
INNER JOIN movies 
USING(title_id)
WHERE 
akatitle  LIKE 'ugly' 
OR title LIKE 'ugly'


Voorbeeld van output:
Ugly Duckling, The (1992) Ruzno pace (1992)
Brutto americano, Il (1963)Ugly American, The (1963)
Häßliche Amerikaner, Der (1963)Ugly American, The (1963)
Häßliche Amerikaner, Der (1963)Ugly American, The (1963)
Missione in oriente (1963) Ugly American, The (1963)
4 bassotti per 1 danese (1966)Ugly Dachshund, The (1966)
Geliebter Haustyrann (1966) Ugly Dachshund, The (1966)

=> 7 rijen dus

Ik zou echter deze output willen krijgen (met 1 query)
Ugly Duckling, The (1992) Ruzno pace (1992)
Brutto americano, Il (1963)
Häßliche Amerikaner, Der (1963)
Missione in oriente (1963)
Ugly American, The (1963)
4 bassotti per 1 danese (1966)
Geliebter Haustyrann (1966)
Ugly Dachshund, The (1966)

=> 3 rijen

Iemand enig idee hoe zoiets moet want ik kan normaal wel alles terugvinden wat ik zoek op internet maar ik heb van dit niet echt een idee hoe het te verwoorden...

[ Voor 64% gewijzigd door wasco op 04-02-2004 23:56 ]

wasco [the brightest crayon in the box]


  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

Dit is niet mogelijk in SQL. Het hoort er overigens ook niet thuis, aangezien het gaat over de presentatie en niet over de data.

There's no place like 127.0.0.1


  • wasco
  • Registratie: April 2003
  • Laatst online: 22-05 11:53

wasco

brightest crayon in the box

Topicstarter
MatHack schreef op 04 februari 2004 @ 23:51:
Dit is niet mogelijk in SQL. Het hoort er overigens ook niet thuis, aangezien het gaat over de presentatie en niet over de data.
is toch niet zomaar presentatie lijkt mij...

Ik zou het ook allemaal manueel kunnen doen met een aantal order by's en dan in PHP manueel die dingen beginnen te groeperen maar ik kan bijna niet geloven dat (My)SQL dit niet zou kunnen...

wasco [the brightest crayon in the box]


  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Vanaf versie 4.1.xx kan je in mysql strings concateneren in een group en zou je in principe GROUP_CONCAT(titlecolumn SEPERATOR '<br />') en dat combineren met een group by, maar zoals al gezegd, is dat inderdaad meer een presentatie dan data kwestie.

[ Voor 6% gewijzigd door Gert op 05-02-2004 00:02 ]


  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 22:34
(helaas) zul je toch echt per film een query op de aliasen moeten doen. Wat jij wil doen is je presentatie logica verplaatsen naar je database, echter heb je al na gedacht over hoe je dan die ge-group-te velden netjes wil formatten in een HTML table?

  • wasco
  • Registratie: April 2003
  • Laatst online: 22-05 11:53

wasco

brightest crayon in the box

Topicstarter
(helaas) zul je toch echt per film een query op de aliasen moeten doen.
ik denk dat het sneller is om dan gewoon mijn eerste query te nemen en met een order by op de title te werken. Dan kan ik via PHP heel snel die title onthoude en als de volgende title dezelfde is dan gaat het om zo'n extra alias en kan ik alternatieve stappen doen in code.
Wat jij wil doen is je presentatie logica verplaatsen naar je database, echter heb je al na gedacht over hoe je dan die ge-group-te velden netjes wil formatten in een HTML table?
ik snap nog steeds niet wat daar presentatielogica aan is. De namen moete niet speciaal geformatteerd zijn, simpelweg een breakje will do. Ik heb altijd geleerd dat je zo weinig mogelijk queries moet doen op een DB en zo weinig mogelijk data moet proberen te returnen (alleen wat je nodig hebt)

wasco [the brightest crayon in the box]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Dit hoort idd niet in de SQL thuis, imo. Maar querien per film is ook weer niet nodig.

cryptisch tipje:

GROUP BY akatitles.title_id
ORDER BY movie.movie_id

code:
1
2
3
4
5
6
laatste_film = -1
voor elk record
   als record.movie_id != laatste_film
      geef filmnaam weer
      laatste_film = record.movie_id
   geef alias weer


Dan moet je er wel uitkomen gok ik zo :Y)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • wasco
  • Registratie: April 2003
  • Laatst online: 22-05 11:53

wasco

brightest crayon in the box

Topicstarter
yep als het niet kan blijkbaar wat ik wil bereiken dan is dat ook wa ik in gedachten had drm.
Bedankt iedereen voor de hulp!

wasco [the brightest crayon in the box]

Pagina: 1