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 23-06-2003, 15:09
phpfreak
 Junior Member
Links : Onlinestatus : phpfreak ist offline
Registriert seit: Mar 2002
Ort: Linz/Austria
Beiträge: 126
phpfreak ist zur Zeit noch ein unbeschriebenes Blatt
Standard join problem

hallo,

ich habe folgendes problem mit einem join. vorab hier mein sql statement:

$sql="SELECT benutzer.nachname,benutzer.aktiv,infodata.id,infodata.description FROM benutzer RIGHT OUTER JOIN infodata ON(benutzer.banktitel=infodata.code)
WHERE benutzer.aktiv='1' AND infodata.id='2260' ORDER BY benutzer.nachname";

ich möchte aus der tabelle benutzer den vollständigen namen haben. wenn in der spalte benutzer.bankitel ein zahlenwert eingetragen ist, dann soll er den dazu passenden namen aus der tabelle infodata anzeigen. nun funktioniert es so, dass nur die anzeigt die auch den schlüssel in der spalte benutzer.banktitel stehen haben. die datensätze die in dieser spalte keine wert stehen haben ignorriert er auch im ergebnis. (somit gibts nur akademiker )

bitte um eure hilfe
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 23-06-2003, 16:32
phpfreak
 Junior Member
Links : Onlinestatus : phpfreak ist offline
Registriert seit: Mar 2002
Ort: Linz/Austria
Beiträge: 126
phpfreak ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich glaube ich konnte mein problem nun eingrenzen. die where klausel mit der id 2260 ist schuld daran.
ich möchte aber die abfrage nur auf datensätze mit dieser id anwenden.


danke für eure hilfe
Mit Zitat antworten
  #3 (permalink)  
Alt 24-06-2003, 08:56
P2oldi
 Junior Member
Links : Onlinestatus : P2oldi ist offline
Registriert seit: Jun 2002
Ort: Hamburg
Beiträge: 239
P2oldi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

irgendwie versteh ich dein Problem nicht so ganz

meinst Du das bei der Ausgabe Datensätze fehlen? Also möchtest Du zusätzlich zu allen mit der ID 2260 auch die haben, bei denen in der Benutzer-Tabelle KEIN Banktitel eingetragen ist?

Versuch das nochmal ein bissel genauer zu beschreiben bitte Also was Du jetzt rausbekommst, und das daran nicht richtig ist
Mit Zitat antworten
  #4 (permalink)  
Alt 24-06-2003, 09:06
phpfreak
 Junior Member
Links : Onlinestatus : phpfreak ist offline
Registriert seit: Mar 2002
Ort: Linz/Austria
Beiträge: 126
phpfreak ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich bekomme nur die raus, die auch in der benutzertabelle einen schlüssel eingetragen haben. ich möchte aber alle benutzer. die dann einen titel haben sollen ihn angezeigt bekommen. leider ist die tabelle für die titel nicht nur für titel bestimmt. da steht auch noch ne menge anderes zeug drin. also nur die mit der id 2260 sind banktitel. und genau diese where klausel (where id=2260) sorgt dafür dass ich nur mitarbeiter mit titel angezeigt bekomme. ich hoffe das war verständlich.

ich möchte also alle mitarbeiter. titel vorhanden -> anzeigen. kein titel -> zelle leer lassen.

danke nochmals
Mit Zitat antworten
  #5 (permalink)  
Alt 24-06-2003, 10:38
P2oldi
 Junior Member
Links : Onlinestatus : P2oldi ist offline
Registriert seit: Jun 2002
Ort: Hamburg
Beiträge: 239
P2oldi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok, dann solltest Du es einfach mal mit einem LEFT join (evtl. INNER, da bin ich grad net sicher) versuchen.

RIGHT outer join bedeutet ja, daß er nur zu die Datensätze anzeigt, zu denen er in der linken Tabelle eine entsprechung findet.

Bei einem Left Join, zeigt er aus der linken Tabelle alle Datensätze an, und halt wenn vorhanden, die Entsprechung aus der rechten.
Mit Zitat antworten
  #6 (permalink)  
Alt 24-06-2003, 21:23
phpfreak
 Junior Member
Links : Onlinestatus : phpfreak ist offline
Registriert seit: Mar 2002
Ort: Linz/Austria
Beiträge: 126
phpfreak ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich hab auch den left outer schon versucht. funktioniert auch nicht. und ich galube es liegt an der anschl where klausel die besagt "where id=2260".
somit nehm ich doch dem left join die wirkung --> oder lieg ich hier falsch

ich muß mich aber zwingend an diese id halten, da meine benötigten werte alle die id 2260 haben.

noch nen tipp??

Mit Zitat antworten
  #7 (permalink)  
Alt 24-06-2003, 22:02
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

probier mal deine id-abfrage als HAVING zu machen, evtl. geht's dann
Code:
SELECT benutzer.nachname,benutzer.aktiv,infodata.id,infodata.description FROM benutzer 
RIGHT OUTER JOIN infodata 
ON(benutzer.banktitel=infodata.code)
HAVING infodata.id='2260'
WHERE benutzer.aktiv='1' 
ORDER BY benutzer.nachname
ohne gewähr
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #8 (permalink)  
Alt 25-06-2003, 09:46
P2oldi
 Junior Member
Links : Onlinestatus : P2oldi ist offline
Registriert seit: Jun 2002
Ort: Hamburg
Beiträge: 239
P2oldi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

könntest Du mal die Table-Strukturen posten? Dann kann ich hier lokal mal ein bissel rumtesten, kann ja net so schwer sein
Mit Zitat antworten
  #9 (permalink)  
Alt 25-06-2003, 10:06
phpfreak
 Junior Member
Links : Onlinestatus : phpfreak ist offline
Registriert seit: Mar 2002
Ort: Linz/Austria
Beiträge: 126
phpfreak ist zur Zeit noch ein unbeschriebenes Blatt
Standard

da es sich leider um keine mysql db handelt kann ich auch nicht so leicht einen dump erstellen. ich hab hier nur mittels access lesenden zugriff auf eine oracle db. aber ich versuchs mal so:

tabelle infodata:

ID Zahl PK
CODE Text PK
DESCRIPTION Text
SORT Text

tabelle benutzer:

BENUTZER TEXT
OE ZAHL
NACHNAME TEXT
VORNAME TEXT
BANKTITEL ZAHL
MITARBEITERNUMMER ZAHL PK

So das wär also die struktur im groben. In der Tabelle Infodata steht dann in der spalte code der wert für den banktitel zb. 1 für Direktor usw. In der Benutzertabelle beim jeweiligen Mitarbeiter in der spalte Banktitel wieder der wert dür den banktitel.

thx again
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

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

Microweber CMS

Open source, drag and drop website builder

13.01.2020 Berni | Kategorie: HTML5/ EDITOR
PhoneGap Apps mit JS, CSS3 und HTML5 erstellen ansehen PhoneGap Apps mit JS, CSS3 und HTML5 erstellen

PhoneGap, Framework zur Erstellung hybrider Applikationen für mobile Endgeräte.

13.01.2020 Berni | Kategorie: App-Entwicklung
Bo)Tickets

Bo)Tickets bietet Ihnen eine Schnittstelle für Kundenanfragen an. In dem Script definieren Sie Supportbereiche, also zum Beispiel „Technik, Buchhaltung, Support“. Ihre Kunden können dann über ein Formular eine Anfrage abschicken.

31.12.2019 bocombo | Kategorie: PHP/ Ticketsystem
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:47 Uhr.