26.10.2009
13:16 von
TBT
[MySQL] Datensatz komplett NULL statt kein Ergebnis
Hallo,
ich starte eine SQL Anweisung an eine MySQL Datenbank, und erhalte einen Datensatz zurück,
welche komplett aus NULL-Werten besteht. Eigentlich sollte ich gar kein Ergebnis erhalten.
Auch EXPLAIN erklärt mir "Impossible WHERE noticed after reading const table...", also
hat er doch gar nichts zum selektieren.
Die Abfrage:
Kann mir das jemand erklären wo da mein Denkfehler ist?
ich starte eine SQL Anweisung an eine MySQL Datenbank, und erhalte einen Datensatz zurück,
welche komplett aus NULL-Werten besteht. Eigentlich sollte ich gar kein Ergebnis erhalten.
Auch EXPLAIN erklärt mir "Impossible WHERE noticed after reading const table...", also
hat er doch gar nichts zum selektieren.
Die Abfrage:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT
`a`.`id` AS `id` ,
`a`.`store_id` AS `store` ,
`a1`.`name` AS `name` ,
`a1`.`id` AS `bundle` ,
`a`.`id` AS `product` ,
`i`.`id` AS `variation` ,
`b1`.`percent` AS `percent` ,
IF( ISNULL( i.id ) , b.price, MIN( i.price ) ) AS `preis` ,
`b`.`customer_group_id` AS `group` ,
`a1`.`smalltext` AS `kurztext` ,
`a1`.`text` AS `text` ,
`a1`.`image` AS `image` ,
`a1`.`alt` AS `alt`
FROM bundle a1
INNER JOIN bundle_detail a0 ON ( a1.id = a0.bundle_id AND a1.from <= CURDATE( ) AND a1.to >= CURDATE( ) )
INNER JOIN product a ON ( a0.product_id = a.id )
INNER JOIN product_price b ON ( a.id = b.product_id )
INNER JOIN bundle_group b1 ON ( b.customer_group_id = b1.customer_group_id AND a1.id = b1.bundle_id )
LEFT JOIN product_variation_group i ON ( a0.product_variation_id = i.product_variation_id AND b.customer_group_id = i.customer_group_id ) für die ungekürzte Fassung bitte einloggen
Werbung
26.10.2009
18:41 von
Abraxax
Ich vermute den Fehler hier:
Wenn i.id NULL ist, soll b.price verwendet werden. Dieser ist aber u.U. auch NULL. Die WHERE bedingungen könnten aber dennoch passen. Was auch immer ... Ist nur ne Vermutung. ;-)
Code
1
IF( ISNULL( i.id ) , b.price, MIN( i.price ) ) AS `preis` ,Wenn i.id NULL ist, soll b.price verwendet werden. Dieser ist aber u.U. auch NULL. Die WHERE bedingungen könnten aber dennoch passen. Was auch immer ... Ist nur ne Vermutung. ;-)
26.10.2009
18:46 von
TBT
aber was ist hiermit
es gibt keinen Datensatz, welcher die Datumsbedingung erfüllt 
Code
1
INNER JOIN bundle_detail a0 ON ( a1.id = a0.bundle_id AND a1.from <= CURDATE( ) AND a1.to >= CURDATE( ) )