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 13-02-2015, 01:31
burzum
 Registrierter Benutzer
Links : Onlinestatus : burzum ist offline
Registriert seit: Oct 2002
Beiträge: 210
burzum ist zur Zeit noch ein unbeschriebenes Blatt
Standard Wie kann ich diese Bedingungen in mein Query einbauen?

Ich habe dieses Query hier das ich via einem ORM generiert habe das so weit auch gut funktioniert. Die OR Bedingung gleicht sich weil einmal mit 'User' als model und einmal mit 'Group' abgefragt wird. Das denied Feld ist 1 oder 0 um einen User oder Gruppe auszuschließen.

Code:
SELECT 
        SocialObjects.id AS `SocialObjects__id`, SocialObjects.user_id AS `SocialObjects__user_id`, SocialObjects.foreign_key AS `SocialObjects__foreign_key`, SocialObjects.model AS `SocialObjects__model`, SocialAccess.id AS `SocialAccess__id`, SocialAccess.accessor_id AS `SocialAccess__accessor_id`, SocialAccess.accessor_model AS `SocialAccess__accessor_model`, SocialAccess.object_id AS `SocialAccess__object_id`, SocialAccess.object_model AS `SocialAccess__object_model`, SocialAccess.denied AS `SocialAccess__denied` 
FROM    social_objects SocialObjects
INNER JOIN social_access SocialAccess ON SocialObjects.id = (SocialAccess.object_id)
WHERE
(
    (
         (SocialAccess.accessor_model = :c0 AND SocialAccess.accessor_id = :c1)
    OR 
         (SocialAccess.accessor_model = :c2 AND SocialAccess.accessor_id in (:c3))
    )
    AND SocialAccess.denied = :c4
)
Mein Problem, welches ich erst hinterher realisiert habe, ist das mir zwei Bedingungen fehlen und ich nicht sicher bin wie ich die in das Query bekomme:
  • Wenn mein Benutzer denied = 1 ist soll das social_object nicht ausgewählt werden, egal in welchen Gruppen der User ist.
  • Ist der user nur in einer Gruppe für dieses social_object und ist diese Gruppe denied = 1 dann soll das social_object auch nicht selektiert werden.
  • Es dürfen keine Duplikate der social_objects gezogen werden.

Wie kann ich das möglichst performant bewerkstelligen? Ich benutze MySQL 5.6 würde es aber vorziehen ohne allzu exotische SQL funktionen auszukommen. Performance ist ebenfalls ein Faktor, das Ganze muß auch noch mit ~100.000 Usern gut laufen Millionen sind mir egal, das nächste Facebook ist das Projekt definitiv nicht , es ist aktuell ein reines Spaßprojekt so weit, es wäre aber natürlich wünschenswert wenn es gut läuft.

Beispieldaten gibt es hier.

Es gibt ja auch IF ELSE in SQL aber ich bin noch nicht drauf gekommen wie ich das hier einbauen kann. Subqueries wären eventuell auch eine Möglichkeit aber ich bezweifel das dies dann noch performant ist?

Edit: Gerade probiert das hier mit ins WHERE zu stecken aber ohne Erfolg.

Code:
AND sp.accessor_id IN (1))) AND CASE WHEN (sp.accessor_model = 'User' AND sp.denied = 1 AND sp.accessor_id =1) THEN FALSE ELSE TRUE

Geändert von burzum (13-02-2015 um 12:45 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
bedingungen, mysql, performance, query, sql


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Wie kann ich den Query abfangen 1Olaf2 PHP Developer Forum 3 22-11-2006 11:55
Der join dein Feind, wie verbinde ich diese beiden Query ? JoelH SQL / Datenbanken 4 12-09-2003 04:54
Wie kann ich ambesten mein script erweitern? JOat PHP Developer Forum 25 20-10-2002 13:17
Wie kann ich einen Werbescript einbauen?? Ramses Apps und PHP Script Gesuche 1 22-07-2002 15:31
Wie kann ich ein PHP script in HTML einbauen? eggtion3k PHP Developer Forum 1 26-04-2001 18:32

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 18:30 Uhr.