PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   2 Select anfragen in eine? (http://www.selfphp.de/forum/showthread.php?t=21027)

merowinger 25.02.2009 11:27:28

2 Select anfragen in eine?
 
Guten Tag zusammen,

ich bin recht "neu" in sachen mysql, und habe bisher nur mit einfachen Select Anweisungen gearbeitet. Nun habe ich jedoch 2 Select Anweisungen die ich in eine Schreiben will.

Kurz ein ein Blick in die Umgebung:
Habe 2 Tabellen.
in der ersten Tabelle sind Mitglieder Informationen hinterlegt und eine Kategorie. Die Kategorie hat eine integer wert.
In der zweiten Tabelle werden die Kategorien aufgelistet mit 2 Spalten (ID, Name, published).

Nun soll es bei uns die Möglichkeit geben, Mitglieder Anhand deren Kategorie zu suchen.

Dazu muss ich ja nun irgendwie auf beide Tabellen zugreifen. Der Select für die Suche schaut bei mir so aus:

Code:

Select name from #__suser_kat where published ='1' and name LIKE '%".$search."%')";
Die Zweite Select Anweisung soll die Informationen über das Mitglied ausgeben, auf dem die erste Select Anweisung passt. Standardmäßig wäre dies bei mir einfach

Code:

SELECT * FROM #__suser WHERE published="1" ORDER BY id DESC';

Könnte mir bitte einer erklären/sagen wie ich dies nun in einer Select Anweisung schreiben kann?

Vielen Dank schon einmal,
Merowinger

Crisps 25.02.2009 13:02:00

AW: 2 Select anfragen in eine?
 
Das ist mit einem einfachen Join möglich. Aber warum haben beide Tabellen eine Spalte mit "published" - was für Werte sind dort gespeichert?

So sollte es jedenfalls in etwa funktionieren:
Code:

SELECT u.name
  FROM #__suser_kat AS k
INNER
  JOIN #__suser AS u
    ON u.id = k.id AND u.published = 1
 WHERE k.name LIKE '%".$search."%'
ORDER
    BY u.id DESC


merowinger 25.02.2009 13:33:52

AW: 2 Select anfragen in eine?
 
Hi,

also 1. danke für deine Antwort :)
und 2. Beide haben ein Published, weil nur werte ausgegeben werden sollen die auch veröffentlicht werden sollen. Da die Suche nach Kategorien gehen soll, habe ich befürchtet, das wenn eine Kategorie auf Published ist und ein Mitglied diese Kategorie zugeordnet ist aber aufn unpublished ist, dieser trotzdem angezeigt wird.
In den Spalten ist entweder eine "1" oder "0".

1 für Published
2 für unpublished

Irgendwie logisch *g*

Oder habe ich hier nun einen Denkfehler? Wie gesagt, bin leider noch recht frisch in Mysql...

Ich habe es eben auch noch über diese Select Anweisung hinbekommen:

Code:

"select vorname, name, emailadr, tel, #__suser_kat.kategorie from #__suser, #__suser_kat where #__suser.kategorie = #__suser_kat.id and #__suser_kat.kategorie LIKE '%".$search."%'";
Dazu musste ich nur in der 2. Tabelle name zu Kategorie umbennen bzw. habe es der übersichtshalber gemacht.

Aber wie du siehst habe ich dort die Überprüfung noch nicht mit drin und vor allem Funktioniert aus irgend einem Grund meine foreach schleife nicht mehr.

Werde es auch noch mal mit deiner Lösung ausprobieren :)

Wenn du noch anregungen hast, bin ich immer erfreut diese zu hören :)

merowinger 25.02.2009 14:14:35

AW: 2 Select anfragen in eine?
 
Ok,

funktioniert nun alles bei mir :)

Was mir gerade ehrlich gesagt erst auffällt, das er zwar nach der ID ordnet, aber von groß nach klein, also 5 4 3 2 1. Jedoch soll er von 1 2 3 4 5 zählen. gibt es eine möglichkeit dafür?

Crisps 25.02.2009 14:43:18

AW: 2 Select anfragen in eine?
 
Zitat:

Zitat von merowinger (Beitrag 125260)
Wenn du noch anregungen hast, bin ich immer erfreut diese zu hören :)

Ja, verwende besser explizite Joins als die Lösung mit WHERE. Ab MySQL 5 kann das nämlich zu Fehlern führen.

Zitat:

Zitat von merowinger (Beitrag 125262)
Was mir gerade ehrlich gesagt erst auffällt, das er zwar nach der ID ordnet, aber von groß nach klein, also 5 4 3 2 1. Jedoch soll er von 1 2 3 4 5 zählen. gibt es eine möglichkeit dafür?

Code:

ORDER
    BY u.id ASC


merowinger 25.02.2009 14:47:01

AW: 2 Select anfragen in eine?
 
Hi,

danke für die Info. Aber das Problem mit MySQL 5 werde ich wohl nicht haben, auf unserem Provider läuft leider noch MySQL 4.0.24 und wird auch in absehbarer Zeit kein Update durch geführt...

Ok, egal welche Order ich mache, es funktioniert dann leider doch nicht. Also ist mein Code nicht ganz ok. Aber bin ganz ehrlich, das ist erst mal zweit ranging, muss noch einen anderes Problem lösen, was wesentlich wichtiger ist und ich bisher leider nicht verstehe (bin ein FISI und kein ANWler ^^) und joomla ist auch noch zum kotzen...


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:01:22 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.