2017-10-01 1 views
0

Ich baue eine einfache Login/Registrierung-Funktion, und ich habe ein kleines Problem.Wie erstellt man eine Abfrage, die verschiedene Tabellen in derselben Datenbank durchsucht, um einen Benutzer auf einer Website zu protokollieren?

Das Problem ist das, das Benutzersystem, das ich entwerfe, soll unterschiedliche Arten von Benutzern unterbringen, wie (Blaue Benutzer, Rote Benutzer, Schwarze Benutzer usw.). Also überlegte ich, ihre verschiedenen Benutzerdaten in separate Datenbanktabellen zu portieren und ihnen sogar separate Registrierungsseiten zu geben, da der Inhalt, den sie auf der Website sehen würden, von ihrer Farbe abhänne.

Zum Beispiel:

Blau Benutzer:

INSERT 'username' INTO `blue` where... 

Red Benutzer:

INSERT 'username' INTO `red` where... 

Aber ich möchte wissen, ob ein Weg, es gibt sie in die Website aus dem gleichen Login anmelden Seite, ohne sie auf verschiedene Seiten zu senden, wenn sie sich anmelden möchten. Ich habe versucht, die folgenden:

"SELECT `id` FROM `blue`,`red` WHERE `username`... 

aber es hat nicht funktioniert, so dass ich zu fragen, ob es einen Weg gibt, die verschiedenen Benutzertypen auf der gleichen Seite und melden sie in auf der gleichen Seite zu registrieren, während sie immer noch geben, ihre anderer Inhalt.

+0

Also, sagen Sie für jeden Benutzer, erstellen Sie separate Tabelle. Aber warum ? – Ravi

+0

Verwenden Sie Join, um Daten von zwei Talben zu erhalten – C2486

+0

Nicht für jede Verwendung, aber für jede Art von Benutzern. Es macht Sinn, wenn Sie z.B. haben Schüler und Lehrer – SourceOverflow

Antwort

0

Ein Problem ist wahrscheinlich, dass der "ID" -Wert ein automatisch inkrementierter Primärschlüssel ist, oder? Daher wäre es nur für die Tabelle, in der sie sich befinden, eindeutig, aber nicht für alle Tabellen (blau, rot, schwarz)

Sie müssten dann immer sicherstellen, eindeutige Benutzernamen und IDs über alle Gruppen zu haben oder lassen Sie sie Wählen Sie die Gruppe aus, in der sie sich bei der Anmeldung befinden, und laden Sie dann nur Daten aus dieser Tabelle.

Wenn Sie das Eindeutigkeitsproblem bereits gelöst haben, sollten Sie in der Lage sein, einfach die bereits von anderen Benutzern vorgeschlagenen Union Queries zu verwenden. Sie können blue, red nicht verwenden, weil das für blue JOIN red kurz ist, was natürlich nur zu Daten führt, bei denen Spalten mit demselben Namen über Blau und Rot gleich sind.

0

Unter der Annahme, dass der Benutzer nur in einer Tabelle sein kann, Sie UNION verwenden könnten ...

SELECT id FROM blue WHERE username... 
UNION 
SELECT id FROM red WHERE username... 

... aber als Ratschlag, wenn die Benutzerinformationen für alle gleich sind, sollten Sie besser haben eine Tabelle für usertypes und eine andere für die Nutzer, und verknüpfen sie mit einem Fremdschlüssel ...

USERTYPES TABLE 
id_usertype 
usrt_name 

USERS TABLE 
id_user 
id_usertype (this should be a foreign key) 
usrname 

ich hoffe, es hilft.

+0

Das klingt, als würde es Dinge, die allen Benutzern gemeinsam sind, wie Benutzernamen, Passwörter, persönliche Daten, Benutzerkategorie usw. übermäßig komplizieren. – halfer

+1

@halfer Ich weiß! Ich habe die Frage bearbeitet, um es zu erklären, aber du bist zu schnell für mich gegangen !! XD –

Verwandte Themen