zapatista
Goto Top

SELECT Anweisung mit mehreren Bedingungen

Hallo zusammen,

ich benötige von Euch Hilfe bei der Erstellung einer SELECT-Abfrage (mySQL) mit mehreren Bedingungen:

Tabelle1 (Gruppen)

person_id project_position_id
(41) (3)

Tabelle2 (Personen)

id user_id
(41) Globale Variable

Klammerwerte sind nicht bekannt. Die user_id erhalte ich durch ein Skript [userid] - für die WHERE-Bedingung.

Also das Ziel ist jetzt den Wert "3" mit der angemeldeten [userid] zu bekommen. Fiktiv ist hier die Person mit der id=41 angegeben. Ich hoffe ich konnte das Problem einigermaßen verständlich beschreiben.

Vielen Dank im Voraus.

Christian
Kommentar vom Moderator masterG am 18.05.2012 um 08:39:28 Uhr
Verschoben nach Datenbanken

Content-ID: 185097

Url: https://administrator.de/contentid/185097

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

Dirmhirn
Dirmhirn 16.05.2012 um 16:37:43 Uhr
Goto Top
Hi!

du suchst einen JOIN. damit verknüpfst du die beiden Tabellen temporär und suchst dann die Zeilen mit user_id = irgendwas.

sg Dirm
zapatista
zapatista 16.05.2012 um 16:54:01 Uhr
Goto Top
Kannst du mir vielleicht eine kurze Gedächtnisstütze geben, wie hier der JOIN zu setzen ist. Das wäre super.
Dirmhirn
Dirmhirn 16.05.2012 um 17:19:02 Uhr
Goto Top
Hi!
so in etwa:
SELECT
FROM Tabelle1 JOIN Tabelle2 ON id = person_id 
WHERE user_id = 'kunz'  

LEFT, Right ... sieh dir dann lieber selber an, weiß ja nicht wie das rundherum bei dir aussieht:
http://dev.mysql.com/doc/refman/5.1/de/join.html

sg Dirm
filippg
filippg 16.05.2012 um 20:27:40 Uhr
Goto Top
Hallo,

mein Tipp: investiere 30 Minuten und lies dir durch. Danach bist du wirklich schlauer.

Gruß

Filipp
zapatista
zapatista 16.05.2012 um 21:17:36 Uhr
Goto Top
Danke für eure Tipps. Aber ich bekomme es nicht gebacken. Vielleicht liegts am Feierabendbier.

Also ich habe da folgendes mir ausgedacht - nach der Doku über Relationale Datenbanken:

SELECT #__Tabelle1.project_position_id 
FROM #__Tabelle1
INNER JOIN #__Tabelle2 ON (#__Tabelle1.person_id = #__Tabelle2.id)
WHERE #__Tabelle2.user_id = [userid]

Leider liefer er kein Ergebnis
nxclass
nxclass 16.05.2012 um 23:24:42 Uhr
Goto Top
Leider liefer er kein Ergebnis
versuch mal:
SELECT
  `Personen`.`id`,
  `Personen`.`user_id`,
  `Gruppen`.`project_position_id`
FROM `Personen`
  LEFT JOIN `Gruppen` ON `Gruppen`.`person_id` = `Personen`.`id`
WHERE
   `Personen`.`user_id` = ?  /* oder $userid oder 3 */
... so kannst Du jedenfalls erkennen: wenn Person existiert aber keine Gruppen dazu.
zapatista
zapatista 18.05.2012 um 21:05:15 Uhr
Goto Top
Das klappt schon mal ganz gut jetzt.

Mal ins Blaue gefragt: Wie sieht das bei der entgegengesetzten UPDATE-Variante aus? Arbeitet man da auch mit JOIN oder gibts da andere Verknüpfungen?

Danke schonmal...
nxclass
nxclass 18.05.2012 um 23:54:20 Uhr
Goto Top
Arbeitet man da auch mit JOIN
... natürlich kann man bei einem UPDATE auch Tabellen Verknüpfen - aber manipuliert werden nur die Daten einer Tabelle.
filippg
filippg 19.05.2012 um 03:38:24 Uhr
Goto Top
... natürlich kann man bei einem UPDATE auch Tabellen Verknüpfen - aber manipuliert werden nur > die Daten einer Tabelle.
Ähhh.. Wieso? Meines bescheidenen Wissens: genau so, wie man bei einem SELECT...JOIN mehrere Zellen aus mehreren Tabellen angeben kann, die selektiert werden, kann man bei einem UPDATE...JOIN mehrere Zellen aus mehreren Tabellen angeben, die aktualisiert werden.

Gruß

Filipp
nxclass
nxclass 19.05.2012 um 12:31:03 Uhr
Goto Top
mehrere Zellen aus mehreren Tabellen angeben, die aktualisiert werden.
das stimmt für MySQL 5. (ggf auch schon ab einer höheren 4er Version von MySQL)