php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 28-08-2007, 09:18
Wunki
 Junior Member
Links : Onlinestatus : Wunki ist offline
Registriert seit: Aug 2002
Beiträge: 50
Wunki ist zur Zeit noch ein unbeschriebenes Blatt
Unhappy Plz Join

Hi Leute,

Ich tüftle jetzt schon ewig an einer Abfrage über 4 Tabellen herum... im Prinzip geht alles mit INNER JOINS ganz gut, leider gehen mir ein paar Datensätze verloren...

das Problem ist dass meine PLZ Tabelle nicht ganz vollständig ist, durch den JOIN werden also sämtliche Daten gekickt, wo in meiner PLZ Tabelle kein Eintrag ist...

wie schaffe ich es dass die Datensätze trotzdem da bleiben und falls in der PLZ keine Zuordnung ist, dann möge er die Spalten "BUNDESLAND" usw. einfach leer lassen... ich habe es jetzt schon mit LEFT JOINS bzw. RIGHT JOINS probiert... klappt leider irgendwie nicht.

Anbei meine Abfrage:

Code:
SELECT 
	JP.VRENUM,
	JP.ADDR_ID,
	J.RDATUM,
	DATE_FORMAT(J.RDATUM, '%d.%m.%y') AS DATUM_NEU,
	AD.KUNNUM1,
	AD.NAME1,
	AD.STRASSE,
	AD.PLZ,
	AD.ORT,
	AD.LAND,
	AD.EMAIL,
	AD.LAND,
	A.KURZNAME,
	A.ARTNUM,
	A.DIMENSION,
	A.WARENGRUPPE,
	P.BUNDESLAND,
	P.LON,
	P.LAT,
	A.VK5B

FROM 
	JOURNAL AS J
	INNER JOIN (JOURNALPOS AS JP 
	INNER JOIN ARTIKEL AS A 
	ON JP.ARTIKEL_ID = A.REC_ID) 
	ON J.REC_ID = JP.JOURNAL_ID AND J.QUELLE = 3 AND JP.QUELLE = 3 
			 
	INNER JOIN (ADRESSEN AS AD 
	INNER JOIN PLZ AS P 
	ON AD.PLZ = P.PLZ AND AD.LAND = P.LAND) 
	ON JP.ADDR_ID = AD.REC_ID 
			 
GROUP BY JP.ADDR_ID
ORDER BY J.RDATUM DESC
Bitte um Hilfe - wäre super!

Danke
LG
Wunki
Mit Zitat antworten
  #2 (permalink)  
Alt 28-08-2007, 10:44
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Was geht denn bei LEFT JOIN und RIGHT JOIN nicht? Die wären hier beide richtig.
Mit Zitat antworten
  #3 (permalink)  
Alt 28-08-2007, 15:16
Wunki
 Junior Member
Links : Onlinestatus : Wunki ist offline
Registriert seit: Aug 2002
Beiträge: 50
Wunki ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hi, also ich habe folgende probiert...

I.

Code:
FROM 
	JOURNAL AS J
	INNER JOIN (JOURNALPOS AS JP 
	INNER JOIN ARTIKEL AS A 
	ON JP.ARTIKEL_ID = A.REC_ID) 
	ON J.REC_ID = JP.JOURNAL_ID AND J.QUELLE = 3 AND JP.QUELLE = 3 
			 
	INNER JOIN (ADRESSEN AS AD 
	LEFT JOIN PLZ AS P 
	ON AD.PLZ = P.PLZ AND AD.LAND = P.LAND) 
	ON JP.ADDR_ID = AD.REC_ID
Da dauert die Abfrage ewig und dann bekomme ich zig Datensätze die alle den gleichen Ortsnamen haben...

II.

Code:
FROM 
	JOURNAL AS J
	INNER JOIN (JOURNALPOS AS JP 
	INNER JOIN ARTIKEL AS A 
	ON JP.ARTIKEL_ID = A.REC_ID) 
	ON J.REC_ID = JP.JOURNAL_ID AND J.QUELLE = 3 AND JP.QUELLE = 3 
			 
	INNER JOIN (ADRESSEN AS AD 
	RIGHT JOIN PLZ AS P 
	ON AD.PLZ = P.PLZ AND AD.LAND = P.LAND) 
	ON JP.ADDR_ID = AD.REC_ID
.. hier bekomme ich komischerweise genau dasselbe ergebnis wie bei INNER JOIN

Ich glaub irgendwie dass dieser Teil Schuld sein könnte -> AND AD.LAND = P.LAND ... " das blöde ist nur dass die Schweiz und Österreich manchmal gleiche PLZ haben und somit wäre ein Schmarrn zugeordnet.

Könntest du mir ev. ein kurzen Vorschlag bei den JOins zeigen, dann kann ichs durchlaufen lassen... oder ich steh so dermassen am Schlauch, dass mir auch nicht mehr zu helfen wäre


danke
Mit Zitat antworten
  #4 (permalink)  
Alt 29-08-2007, 10:58
Flip7
 Registrierter Benutzer
Links : Onlinestatus : Flip7 ist offline
Registriert seit: May 2007
Ort: Munich
Beiträge: 126
Flip7 ist zur Zeit noch ein unbeschriebenes Blatt
Flip7 eine Nachricht über ICQ schicken
Standard

ja des musst du entscheiden, was du in deinem resultat haben willst!

mit left join werden alle datensätze der linken tabelle (sozusagen) beibehalten und nur, wenn vorhanden die rechte tabelle verknüpft!

bei right join ist das das gleiche, nur mit der rechten tabelle eben!
__________________
Find Parties?
Partysuche
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:10 Uhr.