php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.07.2004, 16:28  
Gast
 
Beiträge: n/a
Standard SQL Abfrage mit join

Hallo Zusammen,

will aus einer Datenbank verschiedene Adressen filtern.

Es sollen z. B alle Adressen angezeigt werden, die in der Tabelle "k_schl_w" ein oder mehrere Kriterien erfüllen.

Meine Abfrage:

Code:
select adresse.anrede as anrede, adresse.nname,
      adresse.strasse as Strasse, adresse.land as Land,
      adresse.plz as PLZ, adresse.ort as Ort,
      adresse.postfach as Postfach, adresse.p_plz as PostfachPLZ,
      adresse.p_ort as PostfachOrt, adresse.briefanrede as Briefanrede,
      ansprechp.kdnummer as Kundennummer, adresse.suchname as Suchname
      from adresse
      INNER JOIN k_schl_w ON adresse.adressid = k_schl_w.adressid
      INNER JOIN ansprechp ON adresse.adressid = ansprechp.adressid and
      k_schl_w.name like "Kunden mit Nachzahlung" OR
      k_schl_w.name like "Fondskunde 25-100"
Funktioniert aber nicht richtig.

Wer kann mir hier helfen?

Danke. Günther
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.07.2004, 19:07  
Gast
 
Beiträge: n/a
Standard

Hi.

Wäre natürlich hilfreich, wenn Du etwas genauer sagen würdest, was "funktioniert aber nicht richtig" genau heisst ...

So gefühlsmässig würde ich sagen, dass

Code:
 INNER JOIN ansprechp ON adresse.adressid = ansprechp.adressid and 
      k_schl_w.name like "Kunden mit Nachzahlung" OR 
      k_schl_w.name like "Fondskunde 25-100"
eher so geklammert sein müsste:

Code:
 INNER JOIN ansprechp ON adresse.adressid = ansprechp.adressid and 
      (k_schl_w.name like "Kunden mit Nachzahlung" OR 
      k_schl_w.name like "Fondskunde 25-100")
Gruss
Andreas
  Mit Zitat antworten
Alt 11.07.2004, 23:00  
Gast
 
Beiträge: n/a
Standard

Hallo Andreas,

danke für Deinen Tipp.

Die Abfrage funktioniert so schneller. Ist aber vom Ergebnis noch nicht richtig.

Ich hatte gemeint, dass das Ergebnis nicht richtig sein kann, denn es kommen Datensätze mehrmals vor.

Die Abfrage dauert auch verhältnismäßig sehr lange.

Ist der Syntax meiner Abfrage eigentlich überhaupt richtig?

Ich will auch mehrere Or bzw. And klauseln einbauen. Ist dabei etwas besonderes zu beachten?

Danke und Gruss

Günther
  Mit Zitat antworten
Alt 12.07.2004, 08:28  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Grundsätzlich ist "=" schneller als "like". Deshalb sind Abfragen mit "like" ohne "Wildcards" Quatsch. Und wenn du mehrere Bedingungen für das gleiche Attribut mit "or" verknüpfst, dann ist es besser "in" zu benutzen:
Code:
...
      INNER JOIN ansprechp ON adresse.adressid = ansprechp.adressid 
      AND k_schl_w.name in ("Kunden mit Nachzahlung", "Fondskunde 25-100")
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 12.07.2004, 09:50  
Gast
 
Beiträge: n/a
Standard

Hallo Lazydog,

danke für die Info.

Habe folgende Abfrage getestet:
Code:
select adresse.anrede as anrede, adresse.nname,
      adresse.strasse as Strasse, adresse.land as Land,
      adresse.plz as PLZ, adresse.ort as Ort,
      adresse.postfach as Postfach, adresse.p_plz as PostfachPLZ,
      adresse.p_ort as PostfachOrt, adresse.briefanrede as Briefanrede,
      ansprechp.kdnummer as Kundennummer, adresse.suchname as Suchname
      from adresse, k_schl_w
      INNER JOIN ansprechp ON adresse.adressid = ansprechp.adressid
      AND k_schl_w.name in ("Kunden mit Nachzahlung", "Fondskunde 25-100")
Aber 1. die Abfrage dauert sehr lange, ca. 120 sekunden in denen auf dem rechner gar nichts mehr geht.
2. Das Ergebnis stimmt nicht. Es werden Kunden angezeigt, die nicht in der Tabelle "k_schl_w" einen übereinstimmenden Wert haben und es werden Kunden mehrfach angezeigt.

Kannst Du Dir die komplette Abfrage nochmals ansehen und mir helfen? Danke.

Gruss

Günther
  Mit Zitat antworten
Alt 12.07.2004, 16:13  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Den Join mit k_schl_w brauchst du natürlich schon, ich habe bei mir einfach nur den Teil aufegführt, den ich geändert habe.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage von einer Abfrage Datenbanken 5 27.01.2011 23:31
mysql Abfrage Problem mit dem Join test022 Datenbanken 5 28.04.2007 08:07
MySQL Abfrage macht Seite langsam Datenbanken 11 19.10.2006 19:38
Problem mit Inner join Jabi Datenbanken 15 09.05.2006 14:10
INNER JOIN + Suchkriterien + Abfrage duerov PHP Tipps 2006 4 04.04.2006 12:47
Abfrage über zwei Tabellen (m. JOIN?) Spiff Datenbanken 3 13.02.2006 09:32
inner join aus db PHP Tipps 2006 8 22.01.2006 01:23
[Erledigt] mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert Datenbanken 2 08.09.2005 11:59
[Erledigt] INNER JOIN abfrage zusammen stricken Datenbanken 3 04.07.2005 02:21
join abfrage bei der etwas nicht ausgegeben werden soll nautiluS Datenbanken 7 03.05.2005 09:54
[Erledigt] IF() abfrage in variable packen PHP Tipps 2005 14 01.04.2005 17:23
Abfrage über 2 Tabellen / Join agrajag Datenbanken 2 14.09.2004 23:05
Abfrage aus DB noch mal ausgeben und Abfrage aus mehrern Tab PHP Tipps 2004 4 12.07.2004 15:00
[Erledigt] Mehrere COUNT(*) in einer Abfrage mit LEFT JOIN Datenbanken 8 18.06.2004 13:43
SQL Abfrage mit LEFT JOIN -> OK, aber ich komm net weiter PHP-Fortgeschrittene 3 04.06.2004 00:37

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql wie filtere ich eine liste, sql join n:m, sql join like, sql join schneller, sql like schneller, sql schneller als like, join and like query, sql inner join mit mehreren kriterien, sql n:m join, http://www.php.de/datenbanken/4584-sql-abfrage-mit-join.html, sql inner join 2 bedingungen, sql abfragen join, adressid, sql join mehrere bedingungen, welcher sql join dauert am längsten, schneller als like sql, sql abfragen kriterien join, sql inner join extrem langsam, sql php join abfrage dauer, sql einzelabfrage

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:34 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.