ugrás a tartalomhoz

INNER JOIN probléma

Termes · Szep. 13. (Sze), 11.13
Sziasztok!

Új problémába ütköztem és ennek megoldásában kérnék segítséget.

Adott a lekérdezés, melyet össze kellene vetnem az egy évvel ezelőtti adatokkal és csak a közös elemeket listázni.

SELECT * FROM reszletek 
INNER JOIN tabla 
ON reszletek.id=tabla.id 
WHERE tabla.szolgalat = '2' 
AND reszletek.kesz = '1' 
AND reszletek.adatbazis = '6' 
AND reszletek.frissites_datum 
BETWEEN '2016-01-01' AND '2016-08-31' 
GROUP BY tabla.id

SELECT * FROM reszletek 
INNER JOIN tabla 
ON reszletek.id=tabla.id 
WHERE tabla.szolgalat = '2' 
AND reszletek.kesz = '1' 
AND reszletek.adatbazis = '6' 
AND reszletek.frissites_datum 
BETWEEN '2017-01-01' AND '2017-08-31' 
GROUP BY tabla.id
Ezt hogy lehet egy körben lekérdezni? Köszönöm.
 
1

INTERSECT

tisch.david · Szep. 13. (Sze), 12.12
Szia!

Egy lehetséges megoldás például, hogy INTERSECT-tel veszed a két találati halmaz metszetét és utána használsz GROUP BY-t.

Üdv:
Dávid
2

Köszi az ötletet, de..

Termes · Szep. 13. (Sze), 13.59
Dávid, köszönöm az ötletet, de nem jártam sikerrel...

Úgy oldottam meg, hogy két tömbbe gyűjtöttem az adatokat, majd a tömbök metszetét listáztattam. Remélem, az lett, amit szerettem volna. :)

		$query = "SELECT * FROM ...";
		$result = mysql_query($query) or die ("no query");

		$result_array_1 = array();
		while($row = mysql_fetch_assoc($result))
			{
				$result_array_1[] = $row['id']."<br>";
			}
		
		$queryx = "SELECT * FROM ...";
		$resultx = mysql_query($queryx) or die ("no query");

		$result_array_2 = array();
		while($rowx = mysql_fetch_assoc($resultx))
			{
				$result_array_2[] = $rowx['id']."<br>";
			}
		
		$result = array_intersect($result_array_1, $result_array_2);
		print_r(count($result));
Köszi mégegyszer.
3

Szia!Ha már megvagy vele,

tisch.david · Szep. 14. (Cs), 08.29
Szia!

Ha már megvagy vele, akkor örülök. Ha viszont van még egy kis időd, akkor elmondanád, hogy miért nem jártál sikerrel? A metszetes megoldás nyilván feltételezi, hogy a rekordok a két találati halmazban azonos adattartalmúak. Erről nem írtál semmit, én csak a kérdésfeltevésed alapján feltételeztem ezt, de ha ez adott, akkor annak a megoldásnak működnie kell.

Kevés adat esetén nincs jelentősége, sok adat esetén viszont biztos, hogy jobban jársz, ha az adatbázis kezelővel végezteted el az ilyen típusú munkát, és nem kódból próbálod gereblyézgetni a rekordokat.

Üdv:
Dávid
4

Egyszerűen nem ment..

Termes · Okt. 3. (K), 12.52
Dávid!

Egyszerűen nem ment az sql. Többféle módon is próbáltam intersecttel, de nem adott valós értékeket vissza.

Ezért döntöttem inkább a tömbösítésnél. :)

Köszi mégegyszer.