phpbar.de logo

Mailinglisten-Archive

Problem mit date-feld,left outer join und is null

Problem mit date-feld,left outer join und is null

Sabine Richter mysql-de_(at)_lists.bttr.org
Wed, 19 Jun 2002 15:34:16 +0200


Hallo Jochen,
Du hattest ja schon längst geantwortet. Hatte ich übersehen.
Wahrscheinlich, weil Deine Antwort auf 1 1/2 Stunden früher datierte als
meine Frage und ich immer nur oben in meiner Mailliste gucke.
Du hast ja eigentlich schon eine befriedigende Antwort von Mister h1
bekommen, trotzdem noch was:
Du solltest wirklich, wenn möglich keine reservierten Worte verwenden,
siehe: manual.html#Reserved_words:

Außerdem verstehe ich jetzt einiges nicht mehr:
Auf den ersten Blick hat h1 natürlich recht. Ein not null-Feld kann
nicht null werden.
Aber bei einem left (outer) join mit dieser "where col is null"-Klausel
bekommst Du alle DS aus Tab1, zu denen es keinen DS in Tab2 gibt (ich
denke mal, da der nicht existierende DS ja in col schlecht einen Wert
haben kann).
Drum meine Frage. Meintest Du mit:

> jo, ist mir zwar noch nicht so ganz klar, weil ich ja noch keine Einträge in
> der Tabelle hatte, aber noch der Änderung ( NOT NULL rausgenommen) funzt es. 

- daß Du noch gar keine Einträge in Tab2 hattest
- oder halt eben in Dein date-Feld nix eingetragen hattest.

Wenn letzteres und es zu allen DS in Tab1 auch DS in Tab2 gibt, ist
klar, daß Du eine leere Menge bekommst, da ja der default automatisch
eingetragen wird.
Gleiches hätte bei der Abfrage über pi_total aber auch rauskommen
müssen.

Und wenn ersteres, hätten alle DS aus Tab1 mit der Bedingung "and
st_log_pagenames.name='index'" rauskommen müssen. Bei "pi_total is null"
genau so.
Also: Was wolltest Du wirklich und warum klappt es jetzt?

Und an alle: 
Ich bekomme bei left join + left outer join die selben Ergebnisse. Ich
schätze, mir ist nicht klar, was beim left join zu erwarten ist. Habe
sonst immer nur mit "from tab1, tab2 where ..." gearbeitet und hatte
inner selects und union etc. zur Verfügung.  SQL95? Kann mich da mal
jemand aufklären? 

Viele Grüße
Sabine
  

Jochen Metzger wrote:
> 
> Hallo Sabine,
> jepp, sorry, hier noch einmal komplett...
> > der Aufbau von st_log_page_impressions fehlt!
> >
> > Sabine
> > > Also:
> > > Folgendes SQL soll durchgeführt werden (index als beispiel)
> > > (* nur zum testen)
> > > select * from st_log_pagenames left outer join st_log_page_impressions
> on
> > > st_log_pagenames.id=st_log_page_impressions.st_log_pagenames_id where
> > > st_log_page_impressions.date IS NULL and st_log_pagenames.name='index';
> > ---
> #
> # Tabellenstruktur für Tabelle `st_log_page_impressions`
> #
> 
> CREATE TABLE st_log_page_impressions (
>   id int(9) NOT NULL auto_increment,
>   st_log_pagenames_id int(9) NOT NULL default '0',
>   pi_total int(9) NOT NULL default '0',
>   date date NOT NULL default '0000-00-00',
>   PRIMARY KEY  (id)
> ) TYPE=MyISAM;
> 
> #
> # Struktur#
> CREATE TABLE st_log_pagenames (
>   id int(5) NOT NULL auto_increment,
>   name varchar(20) NOT NULL default '',
>   PRIMARY KEY  (id)
> ) TYPE=MyISAM;
> 
> #
> # Daten für Tabelle `st_log_pagenames`
> #
> 
> INSERT INTO st_log_pagenames VALUES (1, 'index');
> INSERT INTO st_log_pagenames VALUES (2, 'schnellsuche');
> INSERT INTO st_log_pagenames VALUES (3, 'shop');
> INSERT INTO st_log_pagenames VALUES (4, 'chain');
> INSERT INTO st_log_pagenames VALUES (5, 'einkaufscenter');
> INSERT INTO st_log_pagenames VALUES (6, 'archiv');
> INSERT INTO st_log_pagenames VALUES (7, 'shopsuche');
> INSERT INTO st_log_pagenames VALUES (8, 'handel');
> INSERT INTO st_log_pagenames VALUES (9, 'newsletter');
> INSERT INTO st_log_pagenames VALUES (10, 'ekzsuche');
> INSERT INTO st_log_pagenames VALUES (11, 'offen');
> INSERT INTO st_log_pagenames VALUES (12, 'profi');
> INSERT INTO st_log_pagenames VALUES (13, 'shopliste');
> INSERT INTO st_log_pagenames VALUES (14, 'ausgabe_generic');
> INSERT INTO st_log_pagenames VALUES (15, 'infoseite');
> INSERT INTO st_log_pagenames VALUES (16, 'linkliste');
> INSERT INTO st_log_pagenames VALUES (17, 'feedbackmail');
> INSERT INTO st_log_pagenames VALUES (18, 'partner');
> INSERT INTO st_log_pagenames VALUES (19, 'silvester');
> INSERT INTO st_log_pagenames VALUES (20, 'eurorechner');
> INSERT INTO st_log_pagenames VALUES (21, 'service');
> INSERT INTO st_log_pagenames VALUES (22, 'category');
> 
> Grüße
> 
> Jochen
> 
> ---
> Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
> -->>  http://www.4t2.com/mysql

---
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive