[php] loop en query vraagstukje *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een loop waarin een join uit beide tabellen de gegevens ophaalt met hetzelfde Id.

alles gaat goed maar eigenlijk te goed. Ik had graag gezien dat hij naar het volgende id gaat maar omdat in de tweede tabel het id meerdere keren voorkomt. blijft hij door gaan. kan ik dit stoppen.

voorbeeld :

Ik heb tabel 1, met de velden.

Id
straatnaam
postcode

tabel 2

Id
ID van tabel1
image

het is nu zo dat er dus meerdere images aan het zelfde Id van tabel1 gekoppeld kunnen worden

maar tijdens loop mag er maar een image meegenomen worden. Ze worden nu dus allemaal gelooped.

Dit is de query
$sql = "SELECT * FROM tabel1 INNER JOIN tabel2 on tabel1.Id = tabel2.tabel1id WHERE tabel1.Id = tbel2.tabel1id ".$orderByQuery.$limitQuery;
$result = MYSQL_QUERY($sql);
$numberOfRows = MYSQL_NUM_ROWS($result);

iemand suggesties?

thnx

Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Normaal gesproken los je dit met een subquery op (je moet dan nog wel bedenken welke van de meerdere records je wilt laten zien), maar de meeste mysql versies doen geen subquery's.
Waarschijnlijk kun je dit dus het makkelijkst oplossen door met een if-je binnen de loop te controleren of het id nummer wel ongelijk is aan de vorige, zo niet dan fetch je opnieuw.

Who is John Galt?


Acties:
  • 0 Henk 'm!

  • N0stradamus
  • Registratie: April 2002
  • Laatst online: 19-07-2024
Ik zie dat het MYSQL is, dus weet niet 100% zeker of dit gaat werken, maar in M$Microsoft wereld (access, sql server) doen we het zo:

code:
1
SELECT DISTINCT ID, straatnaam, postcode FROM Tabel1 INNER JOIN Tabel2 ON Tabel1.ID = Tabel2.fkID;


Oftewel DISTINCT toevoegen...
Modbreak:Het bedrijf uit Redmond heeft Microsoft en wordt afgekort als MS. M$ is een kinderachtige verbastering en voegt niets toe aan een discussie, dus laat dat graag op het forum :)

[ Voor 29% gewijzigd door gorgi_19 op 13-01-2005 21:05 ]

Als ik het echt allemaal van te voren wist...


Acties:
  • 0 Henk 'm!

  • N0stradamus
  • Registratie: April 2002
  • Laatst online: 19-07-2024
Muah, dat gaat achteraf niet werken, want ik zie dat ik wat veldjes ben vergeten... 8)7
Probeer dan deze
code:
1
2
3
SELECT DISTINCT Tabel1.ID, Tabel1.straatnaam, Tabel1.postcode, First(Tabel2.ID) AS EersteID, Tabel2.fkID, First(Tabel2.image) AS EersteImage
FROM Tabel1 INNER JOIN Tabel2 ON Tabel1.ID = Tabel2.fkID
GROUP BY Tabel1.ID, Tabel1.straatnaam, Tabel1.postcode, Tabel2.fkID;

Met FIRST(veldje) bij zowel het ID als het image veld van de 2e tabel, dan krijg je wat je wilt...

Als ik het echt allemaal van te voren wist...


Acties:
  • 0 Henk 'm!

  • N0stradamus
  • Registratie: April 2002
  • Laatst online: 19-07-2024
offtopic...
modbreak:
Het bedrijf uit Redmond heeft Microsoft en wordt afgekort als MS. M$ is een kinderachtige verbastering en voegt niets toe aan een discussie, dus laat dat graag op het forum :)
Ten eerste... dat was nog een overblijfsel uit mijn jeugd. Net zoiets als roken, alleen daar ben ik mee gestopt. Nu nog met mdollar stoppen... })
Ten tweede, indien dit een auto-modbreak is, er staat een typo in. Het moet zijn ... uit Redmond heet Microsoft

Als ik het echt allemaal van te voren wist...