[PHP/MySQL] GROUP BY efficient toepassen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • GandalfTheGrey
  • Registratie: Juli 2001
  • Laatst online: 01-12-2024

GandalfTheGrey

Remember, Remember..

Topicstarter
Op dit moment heb ik een lijst met bedrijven in een MySQL database staan (Tabel COMPANY). Deze worden momenteel uitgelezen voor een bedrijvengids. Nu wil ik deze bedrijvengids gaat uitbreiden met categorien (Auto, Eten, Amusement etc). Ik wil op een overzicht pagina ongeveer het volgende bereiken:

code:
1
2
3
4
5
6
7
8
9
CATEGORIE 1
bedrijfs website telefoon
===================
Bedrijf1 http://1.nl

CATEGORIE 2
bedrijfs website telefoon
===================
Bedrijf2 http://1.nl


Om dit te bereiken zou ik een tabel company_cat kunnen toevoegen en dan al deze company_cat's uit de DB te halen en voor elk van deze de bedrijven uit de bedrijvenlijst halen (Wat aardig wat queries geeft).
PHP:
1
2
3
4
5
6
$sQuery = "SELECT * FROM company_cat";
$rQuery = mysql_query($sQuery);
while($aQuery = mysql_fetch_array($rQuery){
$sQuery = "SELECT * FROM company WHERE cat_id = ".$aQuery['cat_id']."";
// enzovoort
}


Is het mogelijk om met 1 GROUP BY query alle gegevens uit de database te halen en dan zo weer te geven als ik hierboven aangaf?

[ Voor 12% gewijzigd door GandalfTheGrey op 26-05-2007 11:31 ]

Computer Specs


Acties:
  • 0 Henk 'm!

Verwijderd

Bedoel je niet ORDER BY? ipv GROUP BY in combinatie met een JOIN tussen de 2 tables?

[sql]
SELECT *
FROM company_cat JOIN company ON company_cat.cat_id = company.cat_id
ORDER BY company_cat.cat_id
[/sql]

Succes :)

[ Voor 53% gewijzigd door Verwijderd op 26-05-2007 11:40 ]


Acties:
  • 0 Henk 'm!

  • Siliakus
  • Registratie: November 2000
  • Laatst online: 19-09 20:04
Ik zou een tabel met categoriën maken en daarna een kolom aan je company tabel toevoegen waarop je dan een foreign key relatie naar de categoriën tabel legt.

Om nu te querien leg je dan een join tussen beiden en gebruik je ORDER BY om de gegevens overzichtelijk op het scherm te krijgen.

Dus, ORDER BY category_name, company_name om eerst te sorteren op categorie naam en daarna op bedrijfsnaam.

Edit: je was me 4 minuten voor! :p

[ Voor 4% gewijzigd door Siliakus op 26-05-2007 11:38 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Edit: je was me 4 minuten voor! :p
LOL :9

Acties:
  • 0 Henk 'm!

  • GandalfTheGrey
  • Registratie: Juli 2001
  • Laatst online: 01-12-2024

GandalfTheGrey

Remember, Remember..

Topicstarter
Dan heb ik inderdaad een gesorteerde lijst op basis van categorien, maar weet ik niet waarneer die lijst ophoudt zeg maar. En dan kan ik niet alsvolgt weergeven:

code:
1
2
3
4
5
6
7
8
9
10
11
CATEGORIENAAM1
========================
blalbalblablalblabla


CATEGORIE2
============================


CATEGORIE3
==============================


PHP:
1
2
3
4
5
6
$sQuery = "SELECT company.*, company_cat.name AS cat_name FROM company_cat, company WHERE company.cat_id = company_cat.cat_id ORDER BY company_cat.name";
$rQuery = mysql_query($sQuery);
while($aQuery = mysql_fetch_array($rQuery){
echo ".$aQuery['name']." in ".$aQuery['cat_name'].";

}

[ Voor 35% gewijzigd door GandalfTheGrey op 26-05-2007 11:53 ]

Computer Specs


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

GandalfTheGrey schreef op zaterdag 26 mei 2007 @ 11:48:
Dan heb ik inderdaad een gesorteerde lijst op basis van categorien, maar weet ik niet waarneer die lijst ophoudt zeg maar. En dan kan ik niet alsvolgt weergeven:
Waarom niet? Je kan toch in PHP steeds de categorienaam van de vorige categorie bijhouden, en als die anders is dan de huidige categorie, dan druk je de header voor een nieuwe categorie af voordat je de bedrijfsnaam afdrukt. :)

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

  • GandalfTheGrey
  • Registratie: Juli 2001
  • Laatst online: 01-12-2024

GandalfTheGrey

Remember, Remember..

Topicstarter
Dat is waar. Ik ga dat even uitwerken nu. Bedankt!

Computer Specs

Pagina: 1