SQL-Anfrage

Wie ich glaub am Anfang mal erwähnt habe, sollten die Felder im SQL mit Quelle angegeben werden. Nur dann weiss man, ob das Feld a aus variants oder users stammt.

Egal. das Problem ist in dem SQL selber.
Zum Beispiel hier: Prüfen wir auf admin in der tabelle user? ev. auch in der Tabelle variants, da gemäss JOIN beide Tabelle win Feld user_id besitzen
SQL:
...
WHERE
 user_id = :CURRENT_USER
 OR user_id IN(...

Ich kenne den JOIN mit USING() gar nicht. Ich gehe mal davon aus, dass da beide Tabellen das Feld besitzen müssen. Ist es eine MySQL-Datenbank?

Um das SQL anzupassen - stimmt meine Analyse deiner Texte? So sollte es sein?

1) Ein User sieht nur seine Beträge
2) Ein Administrator sieht seine und alle Benutzereinträge. Nicht aber die Beträge andererAdministratoren

Stimmt das?
nein
1) Ein User sieht seine Beiträge und die Beiträge der Administratoren
2)Ein Administrator sieht alle Beiträge überhaupt(alle User, alle administrator un natürlich seine)

eigentlich dachte ich mit der Role(User und Admin) könnte man etwas machen.
 
Leute hier ist ein Anfrage von einem anderen Script, damit kann der administrator alle Auswahlhistorie sehen, und der user kann nur seine eigene Auswahlhistori, villeicht aus diese können Sie mir helfen
PHP:
<?php
 
        if($_SESSION['role'] == 'admin')
          {
          //alle Daten; Abfrage administrativ
          $history = $dbConnect->query('SELECT drucker.zeit, drucker.sessionID, drucker.user_id, users.login FROM drucker drucker
                                        INNER JOIN users users ON users.user_id = drucker.user_id
                                        GROUP BY drucker.sessionID ORDER by drucker.zeit DESC');
        } else {
          //daten user
           $history = $dbConnect->query('SELECT zeit, sessionID FROM drucker WHERE user_id = "' . $_SESSION['user_id'] . '" GROUP BY sessionID ORDER by zeit DESC');        
           }
        
             while ($item = $history->fetch(PDO::FETCH_ASSOC)) {
            .
            .
           .
       }
            ?>
 
Mal ein schneller Wurf um alle Variants gemäss deiner Anforderungen anzuzeigen

SQL:
SELECT
	var.*	
FROM
	users AS curr_user,
	users AS data_user,
	variants AS var
WHERE
   curr_user.user_id = :CURRENT_USER
   AND (
    	(
		 	data_user.role = 'admin'
		 	OR data_user.user_id = curr_user.user_id
		) OR (
			curr_user.role = 'admin'
		)
	) AND
	data_user.user_id = var.user_id
 
Mal ein schneller Wurf um alle Variants gemäss deiner Anforderungen anzuzeigen

SQL:
SELECT
    var.*   
FROM
    users AS curr_user,
    users AS data_user,
    variants AS var
WHERE
   curr_user.user_id = :CURRENT_USER
   AND (
        (
             data_user.role = 'admin'
             OR data_user.user_id = curr_user.user_id
        ) OR (
            curr_user.role = 'admin'
        )
    ) AND
    data_user.user_id = var.user_id

Hallo Yaslaw,

Du bist der Beste !!!
da funktioniert, wie gewollt.
vielen vielen Dank
 

Neue Beiträge

Zurück