[SQL] Hulp met join en select

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 23-09 17:17

Saven

Administrator

Topicstarter
Hallo Tweakers,
Het coden gaat opzich van een leien dakje :P Alleen ben ik bij nu iets aangekomen waarbij ik mijn god niet weet hoe ik dit zou moeten aanpakken.

Ik zal als eerste even mijn huidige query geven, en dan uitleggen wat ik niet kan:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        $query = $this->core->db->prepare
        ('
            SELECT
                f.id AS fid, f.name AS forum_name,
                u.username AS last_username
            FROM
                forums f
            LEFT JOIN
                forum m
            ON
                (f.id = m.fid)
            LEFT JOIN
                members u
            ON
                (m.uid = u.id)
            WHERE
                f.cid = :cat_id
            GROUP BY
                f.id
            ORDER BY
                f.name
            ASC
        ');

Legenda:
forums f = tabel met verschillende forums zoals 'programming' 'overige' 'crew forum' enz.
f.cid = categorie id, bijv. 'Kletshoekje' waar verschillende forums onder vallen.
forum m = alle forumberichten. Checken of iets een topic is controleer ik met id=tid? zoja; topic, zonee: een reply op het topic
members u = spreekt voor zich denk ik, die haalt de username op van het topic. Alleen last_username klopt niet, want hij haalt het laatste topic nog niet op.

Zou iemand mij misschien kunnen helpen dat ik nog de volgende dingen uit de DB kan toveren:
Het aantal topics in het forum, het aantal reacties in het forum, en het laatste topic, welke weer een username vraagt aan de userstabel om zo de laatste poster te laten zien.

Het klinkt een beetje ingewikkeld, maar dat is het dus ook. Ik kom er echt niet uit.
Als iemand mij hier mee zou kunnen helpen _/-\o_ _/-\o_

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ik weet niet of je nu suggereert dat je dit in één query wil doen, maar dat kun je maar beter vergeten. ;)

Zo niet wil je het dus met meerdere queries doen, maar ik begrijp niet zo waar dan het probleem ligt: wat begrijp je precies niet?

'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.


Acties:
  • 0 Henk 'm!

  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 23:52

The Eagle

I wear my sunglasses at night

We zullen je ongetwijfeld kunnen helpen (al zal een spoedcursus SQL ook goed doen ;) ) maar dat zullen we wel het volledige datamodel moeten hebben en niet alleen een code-snippet :)

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


Acties:
  • 0 Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 23-09 17:17

Saven

Administrator

Topicstarter
Haha ik wilde dit inderaad in één query doen :$
Verdelen over meerdere queries is denk ik geen probleem. Maar ik wilde het graag in 1 query :)

Tenminste, dat leek mij de meest efficiente oplossing ;)

Ik ga nu eerst maar even slapen, want coden & moe zijn is geen goede combi :P Weltrusten :>

Acties:
  • 0 Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 23-09 17:17

Saven

Administrator

Topicstarter
The Eagle schreef op donderdag 29 januari 2009 @ 01:36:
We zullen je ongetwijfeld kunnen helpen (al zal een spoedcursus SQL ook goed doen ;) ) maar dat zullen we wel het volledige datamodel moeten hebben en niet alleen een code-snippet :)
forum:
Afbeeldingslocatie: http://www.imgdumper.nl/uploads/4980fba65f9d3/4980fba6582f9-forum.png

forums:
Afbeeldingslocatie: http://www.imgdumper.nl/uploads/4980fbbccac33/4980fbbcc69c6-forums.png

Stukje members:
Afbeeldingslocatie: http://www.imgdumper.nl/uploads/4980fbd24a745/4980fbd247094-members.png

Alstu :)

edit: omg sorry voor de dubbelpost :$ ik dacht echt dat ik hem editte :+

[ Voor 5% gewijzigd door Saven op 29-01-2009 01:42 ]


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 19:56

MueR

Admin Tweakers Discord

is niet lief

Van wat ik zo zie: ga je datamodel eens uitwerken in Visio of soortgelijke tools. Maak er eens een ERD van, want volgens mij klopt er geen hout van. Een tabel forums naast een tabel forum? Dan ook nog categorieen?

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


Acties:
  • 0 Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 23-09 17:17

Saven

Administrator

Topicstarter
MueR schreef op donderdag 29 januari 2009 @ 10:46:
Van wat ik zo zie: ga je datamodel eens uitwerken in Visio of soortgelijke tools. Maak er eens een ERD van, want volgens mij klopt er geen hout van. Een tabel forums naast een tabel forum? Dan ook nog categorieen?
Je moet de tabel forum eigenlijk zien als forum_messages :P
forums bevat alle forums zoals eerder uitgelegd
forum_cats bevat de hoofdcategoriëen

Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Ik zou ook zeggen, maak eerst eens een goed datamodel. Ook kun je misschien een tool als Navicat gebruiken om dit soort geavanceerde queries mee te bouwen. Dat programma heeft een handige drag & drop interface. Niet gratis, maar er zijn wellicht ook alternatieven voor te vinden. Mysql heeft ook tool om db's mee te ontwerpen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Aan de andere kant: ook met een goed datamodel krijg je uiteindelijk ditzelfde probleem, dat je vervolgens 100x makkelijker oplost in een aantal queries dan in eentje. :)

'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.


Acties:
  • 0 Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 23-09 17:17

Saven

Administrator

Topicstarter
NMe schreef op donderdag 29 januari 2009 @ 11:26:
Aan de andere kant: ook met een goed datamodel krijg je uiteindelijk ditzelfde probleem, dat je vervolgens 100x makkelijker oplost in een aantal queries dan in eentje. :)
Dan doe ik dat dan maar :)
Toch bedankt voor de replies d:)b
Pagina: 1