[SQL] Dubbele weergave van 1 rij... ?

Pagina: 1
Acties:

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 16:00

MueR

Admin Devschuur® & Discord

is niet lief

Topicstarter
Ik ben bezig met een nieuwssysteem, ongeveer zoals in elk standaard CMS aanwezig is. Nou heb ik een tabel met nieuws items en een tabel met categorieën. De relevante velden staan hieronder:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
site_news_categories
> cat_id
> cat_name

site_news_items
> item_id
> cat_id
> cat_game
> item_title

site_games
> game_id
> game_name
Zoals je ziet allemaal niet ingewikkeld. Echter, behalve de gewone categorieën, kan het ook zijn dat er specifiek nieuws over een bepaalde game komt. Wanneer cat_game als waarde 1 heeft (dus true), moet de site de gamenaam als categorie pakken. Ook dit werkt goed.

Het enige probleem waar ik nog tegen aanloop, is bij het alfabetisch sorteren van de lijst op de categorienaam. De site moet dan namelijk uit 2 tabellen gaan sorteren, namelijk op game_name en cat_name. Wanneer ik dit nu doe, worden nieuwsberichten over een game dubbel getoond, en alfabetisch sorteren ho maar.
De sortering wordt gedaan via het volgende (stukje) query:
ORDER BY c.cat_name_nl, g.game_name ASC
dit werkt dus van geen kanten. Weet iemand misschien hoe ik dit moet oplossen?

Mijn dank is bij voorbaat groot :)

[ Voor 4% gewijzigd door MueR op 26-03-2005 04:37 ]

Anyone who gets in between me and my morning coffee should be insecure.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Misschien als je een complete query zou posten...nou kan ik alleen gokken...
SQL:
1
2
3
4
5
6
7
8
9
10
(
  SELECT cat_name AS cat
  FROM site_news_categories
)
UNION DISTINCT
(
  SELECT game_name AS cat
  FROM site_games
)
ORDER BY cat ASC

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 16:00

MueR

Admin Devschuur® & Discord

is niet lief

Topicstarter
De complete query:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$sql = "SELECT i.*, c.*, crew.crew_name, g.*
FROM site_news_items AS i, site_news_categories AS c, site_crew AS crew, site_games AS g
WHERE (
    ((i.cat_game='1') AND (g.game_id=i.cat_id)) 
    OR 
    ((i.cat_game='0') AND (c.cat_id=i.cat_id))
  )
  AND crew.crew_id=i.item_posted_userid
  ".(is_numeric($_GET['catid']) ? "AND i.cat_id='".$_GET['catid']."'" : "")."
  ".(isset($_GET['game']) ? ($_GET['game'] == 1 ? "AND i.cat_game='1'" : "AND i.cat_game='0'") : "")."
  ".(is_numeric($_GET['userid']) ? "AND i.item_posted_userid='".$_GET['userid']."'" : "")."
ORDER BY ".$order_by." ".$order_dir."
LIMIT ".$offset.",".$limit;

Toch maar even wat uitleg bij de query..

(isset($_GET['game']) ? ($_GET['game'] == 1 ? "AND i.cat_game='1'" : "AND i.cat_game='0'") : "")
Bovenstaande wordt eigenlijk alleen gebruikt wanneer alle berichten van een bepaalde game worden opgevraagd.

(is_numeric($_GET['catid']) ? "AND i.cat_id='".$_GET['catid']."'" : "")
Dit wordt gebruikt om alle berichten in een bepaalde categorie te bekijken. In combinatie met $_GET['game'] wordt er gewisseld tussen games en categorieën.

(is_numeric($_GET['userid']) ? "AND i.item_posted_userid='".$_GET['userid']."'" : "")
Bovenstaande wordt gebruikt om alle berichten van dezelfde poster te zoeken (logisch)

[ Voor 47% gewijzigd door MueR op 26-03-2005 04:57 ]

Anyone who gets in between me and my morning coffee should be insecure.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

En als je dat combineert met mijn suggestie?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 16:00

MueR

Admin Devschuur® & Discord

is niet lief

Topicstarter
Ik moet bekennen dat ik niet bekend ben met deze methode, en ik weet niet hoe ik dit in mijn query moet passen. Zou je me daar misschien mee op weg kunnen helpen?

Ik heb het al kunnen fixen, bedankt voor je hulp :D

[ Voor 17% gewijzigd door MueR op 26-03-2005 05:20 ]

Anyone who gets in between me and my morning coffee should be insecure.


Verwijderd

Allemaal leuk een aardig dat jij de oplossing hebt maar check het beleid:
Post ook de oplossing!

Als je probleem is opgelost, kom dan terug om de oplossing te posten. Dan hebben er meer mensen profijt van in de toekomst. Die search is er ook in dit opzicht niet voor niets ;)
Bron: http://gathering.tweakers...essages/740997#postregels

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 16:00

MueR

Admin Devschuur® & Discord

is niet lief

Topicstarter
Verwijderd schreef op zaterdag 26 maart 2005 @ 08:06:
Allemaal leuk een aardig dat jij de oplossing hebt maar check het beleid:

[...]
De oplossing was een paar posts omhoog al gegeven. Het was alleen een kwestie van mijn query herschrijven in de stijl zoals -NMe- aangaf. Verder heeft niemand iets aan mijn precieze query.

Anyone who gets in between me and my morning coffee should be insecure.

Pagina: 1