[php & mysql] vraag over ophalen van gegevens

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het volgende, ik haal wat gegevens op uit 3 verschillende tabellen, de een zijn naw gegevens, de andere is een tabel met orders en de laatste is een tabel met orders die terug gebracht zijn(een order word gesplitst over meerdere orders daarom die andere tabel)

Nu wil ik bv weten wat Piet en Puk in maand September hebben gedaan. Dat kan ik netjes opvragen maar dan krijg ik een lijst terug als

Naam Ordernummer Aantal
Piet 12345 1000
Piet 12342 999
Puk 99999 1500
Puk 99999 1200

Maar dat wil ik niet want ik wil loonstroken gaan uitdraaien en dan wil ik krijgen:

Naam: Piet

Ordernummer: Aantal
12345 1000
12342 500


Naam: Puk

Ordernummer: Aantal
blabla 0000


Wat is een globale manier dat ik er kan voor zorgen dat ik niet die naam zoveel keer krijg. Maar dus eigenlijk Alles wat bij Piet in de maand September hoor.

Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

Hoe vraag je die gegevens op dan, met SQL? Zo ja, hoe ziet de query er uit dan?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
select Thuiswerkers.id, Thuiswerkers.Voornaam, Thuiswerkers.Voorletters, Thuiswerkers.Achternaam,
                        Thuiswerkers.Tussenvoegsels, Thuiswerk.ThuiswerkID, Thuiswerk.ThuiswerkID, Thuiswerkers.Plaats, Thuiswerkers.BankGironummer,
                        Thuiswerk.ThuiswerkerID, SUM(Thuiswerk.Stukprijs * ThuiswerkGereed.AantalTerug) AS Tot, Thuiswerk.AantalMee, Thuiswerk.OrderID,
                        ThuiswerkGereed.ThuiswerkGereedID, ThuiswerkGereed.IDThuiswerk, ThuiswerkGereed.AantalTerug AS AantalT, 
                        ThuiswerkGereed.DatumTerug, Orders.ExactOrderID, NOW(),ThuiswerkGereed.BetaalDatum, ThuiswerkGereed.DeelLevering,
                        MONTH(ThuiswerkGereed.DatumTerug) AS M, YEAR(ThuiswerkGereed.DatumTerug) AS Y, DAYOFMONTH(ThuiswerkGereed.DatumTerug) AS D
                        ,Orders.Komschrijving
                        from Thuiswerk LEFT JOIN Thuiswerkers ON (ThuiswerkerID=Thuiswerkers.id) 
                        LEFT JOIN ThuiswerkGereed ON (ThuiswerkID=ThuiswerkGereed.IDThuiswerk) LEFT
                        JOIN Orders ON (OrderID=Orders.ExactOrderID)
                        where Thuiswerk.ThuiswerkerID=Thuiswerkers.id AND Thuiswerk.Gereed='1' XOR ThuiswerkGereed.DeelLevering='1'
                        AND MONTH(ThuiswerkGereed.BetaalDatum) = '$Maand' OR MONTH(ThuiswerkGereed.BetaalDatum) LIKE '$Maand'
                        AND YEAR(ThuiswerkGereed.BetaalDatum) = '$Jaar' group by ThuiswerkGereed.ThuiswerkGereedID order by Thuiswerkers.id

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12:56
Misschien kun je het query wat beter opmaken?
Verder zul je dit echt in PHP op moeten lossen. Hier staat een duidelijke uitleg: http://www.yapf.net/faq.php?cmd=viewitem&itemid=119

Acties:
  • 0 Henk 'm!

  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 16-09 23:43

mOrPhie

❤️❤️❤️❤️🤍

Je hebt hier te maken met het Relatie-/Order-/Odersub/actie-regels principe. Je wilt het in 1 query ophalen, maar efficienter zou gewoon zijn om het met 2 queries te doen.

Eerst haal je de namen op, en aan de hand van een key haal je de order-informatie op die je wil hebben. Per naam. :)

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dus ik zou eerst de naw id's moeten achterhalen en dan via een loop de rest van de informatie eruit halen ?

Acties:
  • 0 Henk 'm!

  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 17-09 06:59

Eelke Spaak

- Vlad -

Verwijderd schreef op 07 October 2003 @ 10:44:
Dus ik zou eerst de naw id's moeten achterhalen en dan via een loop de rest van de informatie eruit halen ?
Exactement. ;)

De query die jij al uitvoert is de query die het dichtst komt bij wat je wil. Helaas wil je nog nét even iets anders en moet je het dus in een (vrij simpel) PHP-scriptje even oplossen.

TheStreme - Share anything with anyone


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Waarom doe je layout dingen in je query? Je buisnesslogic zou juist voor de opmaak van je 'loonstrookjes' moeten zorgen. Het eerste resultaat is dan meer dan genoeg om mooie afdrukjes van te maken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 08:29
pseudo code:

PHP:
1
2
3
4
5
6
7
8
while($row = fetch_row()) {
  if( $Vorigenaam != $row["naam"] ) {
        eindighuidigeloonstrook();
        beginnieuweloonstrook();
         $Vorigenaam = $row["naam"];
  }
  voegGegevenstoeaanloonstrook($row);
}

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik probeer het voorbeeld van onderstaande site te volgen maar als ik een mysql_fetch_array gebruik dan krijg ik niet de info die ik nodig heb. Maakt niet uit welk veld ik gebruik ik krijg altijd nummers te zien.

http://www.yapf.net/faq.php?cmd=viewitem&itemid=119
Pagina: 1