[Mysql] Vergelijken of iets niet bestaat

Pagina: 1
Acties:

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Ik heb 2 tabellen. een met artikelnrs. een met artnr-prijs-aktueel (j/n) nu wil ik dus alle artikelnrs hebben die of geen prijs-record hebben of geen aktuele prijs hebben. Hoe doe ik dit???

tabel: artikelen
code:
1
artikelnr         int(13)


tabel: prijzen
code:
1
2
3
4
5
artikelnr         int(13)
aktueel           char(1)       = j/n
prijs               decimal(6,2)
ingangsdatum date()
einddatum       date()

Deze tabel kan 500 records per artikel hebben, maar heeft altijd max 1 aktueel=J ( als een prijs 500x gewijzigd is )

Een artikel kan aangemaakt worden zonder prijs ( zijn 2 aparte programma's ) terwijl dit nimmer en nooit de bedoeling is. Nu wil ik dus de records uit de tabel artikelen hebben die niet in de tabel prijzen staan.

Ik heb al gekeken naar joins, maar deze doen niet wat ik wil, want dan moet ik altijd opgeven wat overeenkomt. Terwijl er juist geen overeenkomst moet zijn.

Wat ik zelf als tussen tussenoplossing heb gebouwd is :
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$query="select artikelen.artikelnummer,
     from artikelen
     ";
 $result = mysql_query($query);

if (mysql_num_rows($result)>0)
{
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
    {
        $query2="select prijzen.artikelnummer
            from prijzen
            where aktueel=\"J\" and
                artikelnummer=" . $line[artikelnummer] . "
            ";
        $result2 = mysql_query($query2);
        if (mysql_num_rows($result2)==0)
        {
            $afdruk .= $line["artikelnummer"] . $line["omschrijving"];
        }
    }
}

Maar dit werkt niet echt 100% lekker met 22.000 artikelen, dit levert even leuk 22.001 query's op. Heel raar, maar mijn mysql timed out 8)7

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:33
Met een subquery of met een OUTER JOIN waarbij je dan op NULL checkt oid.

https://fgheysels.github.io/


  • mjax
  • Registratie: September 2000
  • Laatst online: 14-05 11:00
select * from artikelen left join prijzen using(artikelnr) where prijzen.artikelnr is null;

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Ok. thnx de oplossing van mjax deed het hem. Oftewel de 2e oplossing van whoami.

Toch maar eens wat beter kijken naar joins. Want volgens mij begrijp ik ze een beetje verkeerd :)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Professionele website nodig?