- Ad -
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 05-12-2005, 16:19
westberlin
 Member
Links : Onlinestatus : westberlin ist offline
Registriert seit: Dec 2002
Ort: bln / fhain
Beiträge: 336
westberlin ist zur Zeit noch ein unbeschriebenes Blatt
Standard user daten per join abfragen und gleichzeitig black/whitelist abfragen?

Hallo,

derzeit frage ich User wir folgt ab:

SELECT user.id, profil.name
FROM user
LEFT JOIN profil
ON user.id = profil.userID
WHERE
(user.privat = '2' && user.plzAusschluss != '".substr($_SESSION['plz'],0,1)."')
LIMIT 0,1

Jetzt möchte ich in diese Abfrage noch meine white- bzw. blacklist
einbinden, OHNE zuvor eine weitere Abfrage zu starten, geht das?

Whitelist:
userID, ownerID

userID = der user, der den user mit id = ownerID dennoch 'selecten' darf, obwohl er dies aufgrund
(user.privat = '2' && user.plzAusschluss != '".substr($_SESSION['plz'],0,1)."')
nicht könnte.

blacklist:
userID, ownerID

userID = der user, der den user mit id = ownerID nicht 'selecten' darf, obwohl er dies normallerweise könnte =>
(user.privat = '2' && user.plzAusschluss != '".substr($_SESSION['plz'],0,1)."')

Ich hoffe, ich habe mich einigermassen versändlich ausgedrückt?!
Mit Zitat antworten
  #2 (permalink)  
Alt 05-12-2005, 21:20
westberlin
 Member
Links : Onlinestatus : westberlin ist offline
Registriert seit: Dec 2002
Ort: bln / fhain
Beiträge: 336
westberlin ist zur Zeit noch ein unbeschriebenes Blatt
Standard anders gefragt...

anders gefragt...

wenn die blacklist Tabelle so ausschaut:

userID, ownerID
2 1
1 2
3 2
...

und die user Tabelle so:

id, name
1 lars
2 michael
3 julia
4 anne
...

wie kann ich mit einer mit einer Query für user #1(Lars) alle Datensätze raussuche, die Lars nicht in Ihrer Blacklist haben?

Also in dem Beispiel alle user ausser #2 (michael), da er ja user #1 in seiner blacklist hat.
Mit Zitat antworten
  #3 (permalink)  
Alt 05-12-2005, 21:36
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.746
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

left join und mit is null den ownerId prüfen sollte dir helfen
Mit Zitat antworten
  #4 (permalink)  
Alt 05-12-2005, 21:50
westberlin
 Member
Links : Onlinestatus : westberlin ist offline
Registriert seit: Dec 2002
Ort: bln / fhain
Beiträge: 336
westberlin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

SELECT user.id, user.email
FROM user
LEFT JOIN blacklist ON blacklist.userID = user.id
WHERE blacklist.userID IS NULL

oder

SELECT user.id, user.email
FROM user
LEFT JOIN blacklist ON blacklist.ownerID = user.id
WHERE blacklist.userID IS NULL

kapier das grad nich so...
Im ersten Fall kanns ja sein, dass ein anderer User ihn auf seine Blacklist gesetzt hat, und im zweiten Fall, dass dann einfach eine
andere userID gefunden wird ... ?!?
Mit Zitat antworten
  #5 (permalink)  
Alt 05-12-2005, 22:13
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.746
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hm ... probier mal so: (ungetestet)
PHP-Code:
select c.idc.email  from 
   user a left join blacklist b on a
.id=b.userid and a.id=
      right join user c on b
.ownerid=c.id 
         where b
.ownerid is null and c.id<>
man kann wahrscheinlich noch optimieren, aber ich bin jetzt zu faul zu testen

Geändert von asp2php (06-12-2005 um 00:08 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 06-12-2005, 00:06
westberlin
 Member
Links : Onlinestatus : westberlin ist offline
Registriert seit: Dec 2002
Ort: bln / fhain
Beiträge: 336
westberlin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich versteh das mit a.lid bzw. c.lid nicht, was bedeutet das?
Mit Zitat antworten
  #7 (permalink)  
Alt 06-12-2005, 00:08
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.746
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

vertipper von mir, ich verwende immer lid (l für long) , daher ...
Mit Zitat antworten
  #8 (permalink)  
Alt 06-12-2005, 00:47
westberlin
 Member
Links : Onlinestatus : westberlin ist offline
Registriert seit: Dec 2002
Ort: bln / fhain
Beiträge: 336
westberlin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ah ok, dank Dir...
Mit Zitat antworten
  #9 (permalink)  
Alt 06-12-2005, 15:01
westberlin
 Member
Links : Onlinestatus : westberlin ist offline
Registriert seit: Dec 2002
Ort: bln / fhain
Beiträge: 336
westberlin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So hab ich's jetzt:
PHP-Code:
$userQuery "SELECT u.id
        FROM user u left join blacklist b on u.id = b.userID and u.id=1
                  right join user u2 on b.ownerID = u2.id
                     where b.ownerID is null and u2.id <> 1"
;

$userRes mysql_query($userQuery) or die($userQuery.'<br><br>'.mysql_error());

while(
$userRow mysql_fetch_array($userRes))
{
    echo 
$userRow['id'].', '.$userRow['email'].'<br>';

Tabellen:
PHP-Code:
CREATE TABLE `blacklist` (
  `
userIDint(11NOT NULL default '0',
  `
ownerIDint(11NOT NULL default '0'
ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

CREATE TABLE `user` (
  `
idmediumint(8NOT NULL auto_increment,
  `
namevarchar(30collate latin1_general_ci NOT NULL default '',
  
PRIMARY KEY  (`id`)
ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

INSERT INTO `userVALUES (1'lars');
INSERT INTO `userVALUES (2'michael');
INSERT INTO `userVALUES (3'julia');
INSERT INTO `userVALUES (4'anne'); 
und das kommt raus:

PHP-Code:
1,
1,
1,
2,
2,
2,
3,
3,
3,
4,
4,
4
Mit
PHP-Code:
INSERT INTO blacklist VALUES (12); 
kommt das raus:
PHP-Code:
1,
1,
2,
2,
2,
3,
3,
3,
4,
4,
4

Geändert von westberlin (06-12-2005 um 15:04 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 06-12-2005, 15:49
westberlin
 Member
Links : Onlinestatus : westberlin ist offline
Registriert seit: Dec 2002
Ort: bln / fhain
Beiträge: 336
westberlin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So funktioniert es jetzt soweit ich's testen konnte:

SELECT u.id, u.name
FROM user u left join blacklist b on u.id = b.ownerID AND b.userID=1
WHERE b.userID is null
AND u.id != 1

Ist an der Query was auszusetzen bzw. kann man da was optimieren? Oder ist sonst irgendnen Denkfehler drin?
Freu über mich über Feedback...
Mit Zitat antworten
  #11 (permalink)  
Alt 07-12-2005, 16:32
westberlin
 Member
Links : Onlinestatus : westberlin ist offline
Registriert seit: Dec 2002
Ort: bln / fhain
Beiträge: 336
westberlin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

kann sich dem nochmal jmd annehmen?
Weiß überhaupt nicht, ob das gut gelöst ist so...
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

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

EM 2012 Tipp-Spiel ansehen EM 2012 Tipp-Spiel

Online Tipp-Spiel zur Fussball Europameisterschaft 2012, basierend auf php-Script mit hinterlegter mySql-Datenbank

27.05.2012 tippimnetz | Kategorie: PHP/ Spiele
Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:04 Uhr.