Mailinglisten-Archive |
Hallo Michael, Am Freitag, 22. Dezember 2006 10:03 schrieb Lutz Zetzsche: > Am Freitag, 22. Dezember 2006 08:20 schrieb Michael Borchers: > > Folgende Queries liefern das gleiche Ergebnis. > > wenn ich das richtig sehe, ist das Zufall. :-) Die zweite Abfrage ist > doch ein INNER JOIN, während die erste ein LEFT OUTER JOIN ist, wenn > ich jetzt nichts übersehen habe... es ist noch etwas anders... > > SELECT orders.orders_id, orders_products.products_name > > > > FROM orders > > > > LEFT OUTER JOIN orders_products ON orders_products.orders_id = > > > > orders.orders_id > > > > AND orders_products.products_name LIKE '%a%' > > > > WHERE orders.orders_id = orders_products.orders_id > > > > GROUP BY orders.orders_id > > > > LIMIT 100 Durch die WHERE-Bedingung hebelst Du das LEFT OUTER JOIN aus, weil eben gerade in einigen Fällen nicht orders.orders_id = orders_products.orders_id ist, so daß hier tatsächlich dasselbe Ergebnis herauskommt, wie bei einem INNER JOIN. Also wie Yannik schon sagte, muß hier die WHERE-Bedingung weg. Dann stimmt auch wieder meine ursprüngliche Aussage. Abfrage 1 = LEFT OUTER JOIN, Abfrage 2 = INNER JOIN. Wenn Du kein OUTER JOIN willst, nimmst Du also Variante 2. Die wiederum kannst Du auch noch so schreiben: SELECT ... FROM ... INNER JOIN ... ON ... GROUP BY ... Den Rest hat Yannik schon gesagt. :-) > > SELECT orders.orders_id, orders_products.products_name > > > > FROM orders, orders_products > > > > WHERE orders.orders_id = orders_products.orders_id > > > > AND orders_products.products_name LIKE '%a%' > > > > GROUP BY orders.orders_id > > > > LIMIT 100 Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive