Likes Likes:  0
Resultaten 1 tot 11 van de 11
  1. #1
    MYSQL subquery in een join?
    geregistreerd gebruiker
    5 Berichten
    Ingeschreven
    14/08/07

    Locatie
    Omgeving Venlo

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Thread Starter

    MYSQL subquery in een join?

    Hoi,
    (Ik ben nieuw hier en hoop dat ik in het juiste subforum zit, vergeef me als dat niet zo is...)

    Ik probeer uit 2 tabellen gegevens weer te geven in een HTML tabel.
    De eerste tabel behandeld prijsopgaves, de tweede tabel behandeld alle events die betrekking hebben op de gegevens in de eerste tabel.(prijsopgave gemaakt/verstuurd, akkoord terug, etc..)

    Momenteel haal ik alle gegevens uit de eerste tabel, en geef ik het aantal bijbehorende entries weer uit de 2e tabel dmv COUNT().
    Code:
    Select active, id, Klantnummer, RMA, Datum_in, Datum_uit, Keuze, Opmerking, Status, Taal, COUNT(eventId) as numEvents 
    from `po` 
    LEFT OUTER JOIN `po_events` ON po.id = po_events.rmaid 
    group by id
    Nu wil ik echter ipv (of liever zelfs erbij) de laatste bijbehorende rij uit de tweede tabel mee ophalen in dezelfde query.
    Ik wil dus de rij uit de 2e tabel hebben waarbij po_event.rmaid gelijk is aan po.id en daarvan dus rij met het hoogste po_event.id

    Ik had voor ogen om dit in een subquery te doen, maar hoe geef ik dan het id mee van de bijbehorende rij?

    Alternatieve methodes/queries worden eventueel ook op prijs gesteld

  2. #2
    MYSQL subquery in een join?
    geregistreerd gebruiker
    799 Berichten
    Ingeschreven
    29/07/05

    Locatie
    Maastricht

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: -
    KvK nummer: -
    Ondernemingsnummer: -

    Geef sowieso eerst even de tabel-gegevens weer, dus tabelnaam met de kolommen die erbij horen? En evt., mocht dat niet duidelijk zijn, de relatie ertussen.

  3. #3
    MYSQL subquery in een join?
    geregistreerd gebruiker
    5 Berichten
    Ingeschreven
    14/08/07

    Locatie
    Omgeving Venlo

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Thread Starter
    Citaat Oorspronkelijk geplaatst door Str@nger Bekijk Berichten
    Geef sowieso eerst even de tabel-gegevens weer, dus tabelnaam met de kolommen die erbij horen? En evt., mocht dat niet duidelijk zijn, de relatie ertussen.
    Code:
    -- 
    -- Tabel structuur voor tabel `po`
    -- 
    
    CREATE TABLE `po` (
      `id` int(11) NOT NULL auto_increment,
      `Klantnummer` int(11) NOT NULL default '0',
      `RMA` int(11) NOT NULL default '0',
      `Datum_in` date NOT NULL default '0000-00-00',
      `Datum_uit` date default NULL,
      `Keuze` int(3) default '0',
      `Opmerking` varchar(250) default NULL,
      `Status` int(3) NOT NULL default '0',
      `Taal` int(2) default '1',
      `active` tinyint(1) NOT NULL default '1',
      `Creator` varchar(35) default NULL,
      PRIMARY KEY  (`id`),
      UNIQUE KEY `RMA` (`RMA`),
      KEY `Klantnummer` (`Klantnummer`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    
    -- --------------------------------------------------------
    
    -- 
    -- Tabel structuur voor tabel `po_events`
    -- 
    
    CREATE TABLE `po_events` (
      `eventId` int(11) NOT NULL auto_increment,
      `rmaid` int(11) NOT NULL default '0',
      `eventDate` date NOT NULL default '0000-00-00',
      `event` text NOT NULL,
      `eventUser` varchar(35) NOT NULL default '',
      PRIMARY KEY  (`eventId`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    po_events.rmaid verwijst naar po.id

    offtopic: Ik realiseer me ook dat de kolommen `Klantnummer` en `RMA` zijn gedefinieerd als Integers, maar kan ik hier niet beter varchar van maken omwille van het geheugengebruik? deze waardes worden toch nooit gebruikt in berekeningen, er wordt echter wel op gesorteerd.
    Laatst gewijzigd door Sjun; 14/08/07 om 13:50. Reden: toevoeging: int of varchar?

  4. #4
    MYSQL subquery in een join?
    geregistreerd gebruiker
    803 Berichten
    Ingeschreven
    08/03/04

    Locatie
    Zevenbergschen Hoek / Breda

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Naam: Frans van Nispen
    Bedrijf: Xentronix
    Functie: CEO
    URL: www.xentronix.nl
    Registrar SIDN: Ja
    KvK nummer: 20108684
    Ondernemingsnummer: nvt

    Citaat Oorspronkelijk geplaatst door Sjun Bekijk Berichten
    offtopic: Ik realiseer me ook dat de kolommen `Klantnummer` en `RMA` zijn gedefinieerd als Integers, maar kan ik hier niet beter varchar van maken omwille van het geheugengebruik? deze waardes worden toch nooit gebruikt in berekeningen, er wordt echter wel op gesorteerd.
    Absoluut niet. Als je later een join wilt gaan maken op deze gegevens, moet er een tablescan aan te pas komen. En een integer is niet groot op schijf, kleiner zelfs dan de leesbare ascii vorm:

    VARCHAR: 255, 3 bytes INT: 1 byte
    VARCHAR: 65535, 5 bytes INT: 2 bytes

    Je wilt dus uit po_events de MAX(eventId) ophalen en de bijbehorende gegevens in dezelfde query ophalen?

    Ik zou een extra veld toevoegen aan po en daar de laatste eventId in opslaan. Enige wat je dan moet doen is bij het aanmaken, of verwijderen van een rma, deze id updaten.

    Kost je een paar bytes per row, maar het is eenvoudig voor je query en razend snel.

  5. #5
    MYSQL subquery in een join?
    geregistreerd gebruiker
    5 Berichten
    Ingeschreven
    14/08/07

    Locatie
    Omgeving Venlo

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Thread Starter
    Citaat Oorspronkelijk geplaatst door FransVanNispen Bekijk Berichten
    Ik zou een extra veld toevoegen aan po en daar de laatste eventId in opslaan. Enige wat je dan moet doen is bij het aanmaken, of verwijderen van een rma, deze id updaten.
    Supertip

    Ik heb een 'Opmerkingen' kolom, maar nu blijkt dat ze geen opmerkingen gebruiken, en op de plek waar deze opmerkingen worden weergegeven in de html-tabel willen ze juist deze laatste gebeurtenis zien.
    Momenteel schrijven ze zelf handmatig het laaste event over naar het opmerkingenveld, dat hoef ik dus enkel maar te automatiseren, als het ware.
    (Zo bekeken vraag ik me nu eigenlijk af waarom ik daar zelf niet aan gedacht heb)

    Qua database-structuur hoef ik dus niet eens een extra veld toe te voegen

    Daarentegen moet ik naast een insert-query voor tabel 2 dus wel een update-query schrijven voor tabel 1..

  6. #6
    MYSQL subquery in een join?
    geregistreerd gebruiker
    803 Berichten
    Ingeschreven
    08/03/04

    Locatie
    Zevenbergschen Hoek / Breda

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Naam: Frans van Nispen
    Bedrijf: Xentronix
    Functie: CEO
    URL: www.xentronix.nl
    Registrar SIDN: Ja
    KvK nummer: 20108684
    Ondernemingsnummer: nvt

    Ik zou geen text over kopieren, maar gewoon de ID
    Lekker klein, geen fouten en makkelijk en snel op te halen in een join

  7. #7
    MYSQL subquery in een join?
    geregistreerd gebruiker
    5 Berichten
    Ingeschreven
    14/08/07

    Locatie
    Omgeving Venlo

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Thread Starter
    Citaat Oorspronkelijk geplaatst door FransVanNispen Bekijk Berichten
    Ik zou geen text over kopieren, maar gewoon de ID
    Lekker klein, geen fouten en makkelijk en snel op te halen in een join
    ah, op die fiets...

    Klinkt ook goed eigenlijk...
    Morgen ga ik er mee aan de slag, nu ga ik eerst thuis nieuwe bammetjes halen.

  8. #8
    MYSQL subquery in een join?
    uhh?
    905 Berichten
    Ingeschreven
    18/12/04

    Locatie
    Leivere

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: 12060688
    Ondernemingsnummer: nvt

    Citaat Oorspronkelijk geplaatst door FransVanNispen Bekijk Berichten
    Ik zou een extra veld toevoegen aan po en daar de laatste eventId in opslaan. Enige wat je dan moet doen is bij het aanmaken, of verwijderen van een rma, deze id updaten.

    Kost je een paar bytes per row, maar het is eenvoudig voor je query en razend snel.
    En daarvoor zijn triggers uitgevonden, zodat je dat niet in je code hoeft op te nemen.

  9. #9
    MYSQL subquery in een join?
    geregistreerd gebruiker
    803 Berichten
    Ingeschreven
    08/03/04

    Locatie
    Zevenbergschen Hoek / Breda

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Naam: Frans van Nispen
    Bedrijf: Xentronix
    Functie: CEO
    URL: www.xentronix.nl
    Registrar SIDN: Ja
    KvK nummer: 20108684
    Ondernemingsnummer: nvt

    En die zijn niet op iedere MySQL versie ondersteund

  10. #10
    MYSQL subquery in een join?
    geregistreerd gebruiker
    5 Berichten
    Ingeschreven
    14/08/07

    Locatie
    Omgeving Venlo

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Thread Starter
    Citaat Oorspronkelijk geplaatst door TiMMiEJ Bekijk Berichten
    En daarvoor zijn triggers uitgevonden, zodat je dat niet in je code hoeft op te nemen.
    vertel meer, vertel meer
    Ik gebruik overigens versie 4.1.18

    edit: eerst upgraden naar minimaal 5.0.2 dus: dev.mysql.com/doc/refman/5.0/en/triggers.html
    (Ik mag geen werkende urls posten < 10 posts)

    Citaat Oorspronkelijk geplaatst door FransVanNispen Bekijk Berichten
    Ik zou geen text over kopieren, maar gewoon de ID
    Lekker klein, geen fouten en makkelijk en snel op te halen in een join
    Helaas blijkt dit ook niet werkbaar omdat ik dan niet meer het aantal bijbehorende events krijg doordat ik met een andere JOIN moet werken.

    Uiteindelijk blijkt echter dat ik de eerste query eenvoudig heb kunnen aanpassen door ipv `event` MAX(event) te gebruiken.
    Dan hoef ik mijn eerste tabel ook helemaal niet bij te werken bij het invoegen van gebeurtenissen in de tweede tabel, en heb ik nauwelijks extra code nodig.

    whoops, ook niet, dan krijg ik de rij beginnend met de hoogste letter uit het alfabet... nevermind.. foutje
    Laatst gewijzigd door Sjun; 15/08/07 om 10:21. Reden: Automerged Dubbelpost

  11. #11
    MYSQL subquery in een join?
    geregistreerd gebruiker
    803 Berichten
    Ingeschreven
    08/03/04

    Locatie
    Zevenbergschen Hoek / Breda

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Naam: Frans van Nispen
    Bedrijf: Xentronix
    Functie: CEO
    URL: www.xentronix.nl
    Registrar SIDN: Ja
    KvK nummer: 20108684
    Ondernemingsnummer: nvt

    Triggers zijn pas mogelijk vanaf versie 5.

Labels voor dit Bericht

Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics