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 May 18, 2012 um 06:39:28 Uhr
Verschoben nach Datenbanken

Content-Key: 185097

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

Printed on: April 23, 2024 at 21:04 o'clock

Member: Dirmhirn
Dirmhirn May 16, 2012 at 14:37:43 (UTC)
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
Member: zapatista
zapatista May 16, 2012 at 14:54:01 (UTC)
Goto Top
Kannst du mir vielleicht eine kurze Gedächtnisstütze geben, wie hier der JOIN zu setzen ist. Das wäre super.
Member: Dirmhirn
Dirmhirn May 16, 2012 at 15:19:02 (UTC)
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
Member: filippg
filippg May 16, 2012 at 18:27:40 (UTC)
Goto Top
Hallo,

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

Gruß

Filipp
Member: zapatista
zapatista May 16, 2012 at 19:17:36 (UTC)
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
Member: nxclass
nxclass May 16, 2012 at 21:24:42 (UTC)
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.
Member: zapatista
zapatista May 18, 2012 at 19:05:15 (UTC)
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...
Member: nxclass
nxclass May 18, 2012 at 21:54:20 (UTC)
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.
Member: filippg
filippg May 19, 2012 at 01:38:24 (UTC)
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
Member: nxclass
nxclass May 19, 2012 at 10:31:03 (UTC)
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)