php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.01.2005, 10:24  
Gast
 
Beiträge: n/a
Standard [Erledigt] MySQL -Abfrage

Hi Zusammen!

Ich habe ein kleines Problem mit einer MySQL-Abfrage:

Ich habe in einem Script eine Benutzerverwaltung. Die Tabelle sieht so aus;
Tabelle: groups

GID | groupname | adduser | edituser | ... |
1 | admin | 1 | 1 | ...
2 | verwaltung | 1 | 1 | ...
3 | user | 0 | 0 | ...
GID = ID der Gruppe (auto-wert)
groupname, adduser = legt Fest ob die gruppe entsprechende aktion ausführen darf (wert 0 oder 1)

Jetzt wollte ich noch eine abfrage erstellen, womit geregelt wird, welche Gruppe von wem Bearbeitet werden darf. Z.B. Verwaltung darf User anlegen und bearbeiten. Aber der Zugriff auf die Admins soll nicht möglich sein.
Das wolte ich mit einer zweiten Tabelle lösen:
Tabelle: allow_edit_group

user_gid | edit_gid | allow_edit
1 | 1 | 1
1 | 2 | 1
2 | 3 | 1

user_gid = Die Gruppe die der jeweile User angehört
edit_gid = die zu bearbeitende gruppe
allow_edit = bearbeiten erlaubt (wert 1)



Jetzt zum eigentlichen Problem:

Wenn ich eine Gruppe ändere Frage ich aus der tabelle groups alle Gruppennamen ab und die dazugehörige GID.
Aus der zweiten Tabelle möchte ich allow_edit für die jeweilige Gruppe abfragen. Ich habe schon verschiedene Varianten ausprobiert. Das Problem ist, das entweder nur die Gruppen angezeigt werden die in allow_edit 1 sind oder halt alle groupname aus group.
Ziel soll sein, das alle Gruppen angezeigt werden und entsprechend allow_edit wenn =1.

Das allow_edit brauche ich, um bei der Ausgabe dann eine checkbox entsprechen zu aktivieren, wenn das Recht zum bearbeiten vorhanden ist.

Wäre es denn einfacher, wenn ich in die Tabelle allow_edit für die nicht zu bearbeitenden Gruppen ein allo_edit=0 einfüge?

Ich hoffe man versteht mein Problem...
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 17.01.2005, 11:10  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.232
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard Re: MySQL -Abfrage

Zitat:
Zitat von Hephaistos
Wäre es denn einfacher, wenn ich in die Tabelle allow_edit für die nicht zu bearbeitenden Gruppen ein allo_edit=0 einfüge?

Ich hoffe man versteht mein Problem...
Das wäre denke ich vollkommen egal, wenn ich dein Problem richtig verstanden habe.

Du willst also auf Basis einer Gruppe ($zuEditierendeGruppenID) wissen, welche anderen Gruppen diese verändern dürfen und welche nicht?

Code:
SELECT groups.GID, groups.groupname, COALESCE(allow_edit_group.allow_edit, 0) AS allow_edit
FROM groups LEFT OUTER JOIN allow_edit_group
ON groups.GID=allow_edit_group.user_gid AND allow_edit_group.edit_git=$zuEditierendeGruppenID
Das sollte eigentlich die Daten zurückgeben. Ungetestet. Zur Erklärung:
- COALESCE gibt den ersten Wert (allow_edit) zurück, falls dieser nicht NULL ist. Ansonsten den zweiten Wert (0). Steht also in der Tabelle allow_edit nichts zur Gruppe, wird "0" zurückgegeben (die Zahl). Steht irgendwas in der Tabelle (1 oder 0) wird das auch zurückgegeben.
- LEFT OUTER JOIN verbindet beide Tabellen mit den Bedingungen, die im ON folgen. Dabei werden aus der linken Tabelle (groups) alle Datensätze markiert, egal ob in der rechten Tabelle (Alle Datensätze mit edit_git=$zuEditierendeGruppenID) Datensätze gefunden werden oder nicht.


Man kann das ab MySQL 4.1 auch mit Subquerys formulieren....
mepeisen ist offline   Mit Zitat antworten
Alt 17.01.2005, 11:24  
Gast
 
Beiträge: n/a
Standard

Jepp, funktioniert.

Danke

-----edit------

Habe doch noch ein kleines Problem.

Aber ich glaube hier habe ich mich falsch ausgedrückt.

Ich bekomme jetzt wenn ich admin (GID=1) auswähle alle angezeigt, die diese Gruppe bearbeiten dürfen.
Aber ich wollte anzeigen, welche Gruppen Admin bearbeiten dürfen.

----edit 2-----

Da Problem habe ich jetzt gelöst.
  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
[Erledigt] MySql Frage: Problem mit einer etwas lomplexeren Abfrage tomtaz Datenbanken 5 24.06.2008 22:36
MySQL Abfrage als PHP class d3rbastl3r PHP Tipps 2008 2 11.06.2008 15:41
Frage: richtige SQL Abfrage von einer MySQL Spalte die SET werte besitzt Seb PHP Tipps 2008 2 29.05.2008 11:36
MySQL Abfrage von Ver. 5 für Ver 3. des MySQL Servers FireFIghter Datenbanken 3 02.02.2007 17:18
Datum bezogene mysql abfrage ApfeL Datenbanken 5 22.10.2006 16:03
MySQL Abfrage macht Seite langsam Datenbanken 11 19.10.2006 19:38
MySQL - Abfrage: Unterschiedliche Ergebnisse aus PHP/manuell horstenpeter Datenbanken 3 16.07.2006 13:22
mysql abfrage in Schleife havok PHP Tipps 2006 6 09.05.2006 08:39
Abfrage bei mySQL 4 ApfeL Datenbanken 5 24.03.2006 18:53
[Erledigt] mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert Datenbanken 2 08.09.2005 11:59
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
einfache mysql abfrage und mysql update haut nicht ganz hin djrace PHP Tipps 2005-2 6 12.08.2005 15:28
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
komplizierte mySQL Abfrage Datenbanken 6 25.06.2004 15:34
[Erledigt] mysql Abfrage Datenbanken 5 18.06.2004 14:16

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
abfrage einer mysql gruppe

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:26 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.